Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

Re: Re: XS routine returns an extra depth of array refs

by mugwumpjism (Hermit)
on Nov 05, 2001 at 23:34 UTC ( #123392=note: print w/replies, xml ) Need Help??

in reply to Re: XS routine returns an extra depth of array refs
in thread XS routine returns an extra depth of array refs

If you really want to output arrays from C, you need to push your items on the stack.

Right, that's the ticket. This seems to work the way I want:

#include <sys/types.h> #include <dirent.h> #include <stdio.h> void readdir_inode(dirname) char* dirname INIT: struct dirent *ent; DIR* dir; SV* record[2]; AV *entry, *ret_val; PPCODE: dir = opendir(dirname); if (dir) { while ((ent=readdir(dir))) { printf("%ld %x\n", ent->d_ino, ent->d_name); record[0] = newSVpv(ent->d_name, 0); record[1] = newSViv((IV)ent->d_ino); PUSHs(newRV_noinc(av_make(2, record))); } closedir(dir); }

At least, I hope that last "newRV_noinc" shouldn't be a "newRV_inc"!

Replies are listed 'Best First'.
Re:{3} XS routine returns an extra depth of array refs
by jeroenes (Priest) on Nov 05, 2001 at 23:48 UTC
    It should be newRV_inc. :-)

    Only with inline the refcounter of the SV gets auto-incremented. With XS you have to that yourself.

    Update: For clarity, only the refcounter of the SV that gets returned! Other SV*'s you have to inc manually!

      The whole reason I'm not using Inline is because I want to be able to compile this as a module and not have it try to compile stuff at run time!
        Modules using Inline are compiled only once and this can be done during installation or even before distribution (for win32 for ex.).

        You have to modify your Makefile.PL for that, it's in the docs.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://123392]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (3)
As of 2018-02-22 04:02 GMT
Find Nodes?
    Voting Booth?
    When it is dark outside I am happiest to see ...

    Results (288 votes). Check out past polls.