Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Not able to pass the hash reference to callback from xsubpp

by ikegami (Pope)
on Aug 13, 2013 at 13:36 UTC ( #1049271=note: print w/ replies, xml ) Need Help??


in reply to Not able to pass the hash reference to callback from xsubpp

Subs can only take scalars as arguments; you can't pass a hash. You can pass a reference to the hash, though.

Also, you hold two references to the hash for no reason.

You want

HV* data_hash = newHV(); SV* data_hash_ref = newRV_inc(data_hash); ... call_perl_sub("test_callback", data_hash_ref); ... SvREFCNT_dec(data_hash_ref); /* Or motalise and return to caller */ SvREFCNT_dec(data_hash);

Since we know data_hash_ref will outlive data_hash, we can avoid a ref count increment and decrement pair and simplify the above to the following:

HV* data_hash = newHV(); SV* data_hash_ref = newRV_noinc(data_hash); ... call_perl_sub("test_callback", data_hash_ref); ... SvREFCNT_dec(data_hash_ref); /* Or motalise and return to caller */


Comment on Re: Not able to pass the hash reference to callback from xsubpp
Select or Download Code
Re^2: Not able to pass the hash reference to callback from xsubpp
by sriniiyer (Initiate) on Aug 13, 2013 at 15:56 UTC

    Thank you ikegami!

    That worked perfectly.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1049271]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (10)
As of 2015-07-06 09:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (71 votes), past polls