Well, I went with this:
Pike_sp++; object_index_no_free2(Pike_sp-1, portal,0, MK_STRING_SVALUE("_datarows"));
For error throwing consistency reasons, it's better to swap the above two lines; eg:
| object_index_no_free2(Pike_sp, portal,0, MK_STRING_SVALUE("_datarows")); | Pike_sp++;
Otherwise, the error cleanup code will pop an uninitialized stack value in case object_index_no_free() throws an error.
-- Sincerely, Stephen R. van den Berg.