in reply to Inline C : dereferencing array of hash references returned from function
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Inline C : dereferencing array of hash references returned from function
by String62 (Novice) on Feb 16, 2011 at 10:06 UTC | |
|
Re^2: Inline C : dereferencing array of hash references returned from function
by String62 (Novice) on Feb 16, 2011 at 16:26 UTC | |
by ikegami (Patriarch) on Feb 16, 2011 at 16:31 UTC |