Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

Re^4: Passing integer pointer in XS? (OUTPUT:)

by ikegami (Patriarch)
on Jul 18, 2016 at 21:38 UTC ( #1168010=note: print w/replies, xml ) Need Help??

in reply to Re^3: Passing integer pointer in XS? (OUTPUT:)
in thread Passing integer pointer in XS?

Problem: You can't write to protocol or model safely because one of the force functions wasn't used. You might end up changing variables and constants you didn't mean to change. (They might have fixed that in 5.24?)

use strict; use warnings; use feature qw( say ); use Inline C => <<'__EOS__'; void testing(char* s) { s[0] = 'y'; } __EOS__ my $x = "x"; my $y = $x; say "$x-$y"; testing($y); say "$x-$y";
x-x y-y <-- Changed both $x and $y
for (1..2) { my $y = "x"; say $y; testing($y); }
x y <-- Changed the constant!

Note: The caller will need to do s/\0.*// for $protocol, $model;

Replies are listed 'Best First'.
Re^5: Passing integer pointer in XS? (const)
by tye (Sage) on Jul 18, 2016 at 21:51 UTC

    I suspect that those "char *" arguments are treated such that they could be "const char *" arguments. I also suspect that "\0" characters are not expected. But if I am wrong then, yes, you need to do more work than I did. Thanks.

    - tye        

      And thank you for showing me int &. It's not valid C, but apparently it's valid XS. I did not know that.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (3)
As of 2022-12-08 23:57 GMT
Find Nodes?
    Voting Booth?

    No recent polls found