I don't know if it addresses your question at all, but I see major errors.
The only thing that should be mortal is the RV you return. Everything else is being referenced.
The fourth argument of hv_store is documented to be an SV*. I don't see how what you have could even compile.
SV* get_data() { AV * results; I32 nr = 0; int n; results = newAV(); for (n = 0; n <= nr; n++) { HV * rh = newHV(); { SV * val = newSVpv("mouse", 0); hv_store(rh, "mickey", 6, val, 0); } { SV * val = newSVpv("kong", 0); hv_store(rh, "donkey", 6, val, 0); } av_push(results, newRV_noinc((SV*)rh)); } return newRV_noinc((SV*)results); }
Untested.
The usage of newRV is not documented, so I used newRV_noinc.
Your loop is completely useless, but I left it in since I figure you would eventually use it.
In reply to Re: Inline C : dereferencing array of hash references returned from function
by ikegami
in thread Inline C : dereferencing array of hash references returned from function
by String62
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |