Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: Silencing warnings inside C/XS

by Tanktalus (Canon)
on Oct 10, 2012 at 16:36 UTC ( #998256=note: print w/ replies, xml ) Need Help??


in reply to Silencing warnings inside C/XS

First off, just a disclaimer: I run my production code with use warnings FATAL => 'all'; (or an equivalent). A bit of a masochist, I suppose I am.

Now, with that said, how do I deal with valid undefs? I check if they're defined before I use them. So, my recommendation for your XS code? Check if they're defined before you use them ;-) I'm sure there's some sort of SvOK() or something that will tell you this.

Ok, so let's say you want another work around. My experience with just such an annoying undefined message coming from JSON::XS is that you need to say "no warnings 'uninitialized';" outside the function call. So I have code like this:

{ no warnings 'uninitialized'; $text = $json->encode($object); }
That wrapper alluded to by the anonymous monk would work here. But it's not nearly so ugly as that because this is perl, and we can do wonderful things. Wonderful, horrible things. Well, they'd be horrible in other languages, but I use them a lot in perl.
use Sub::Name; for my $f (@wrapper_funcs) { my $xs = $f . 'XS'; *$f = subname $f => sub { no warnings 'uninitialized'; &$xs; # @_ gets passed along automatically }; }
(The "subname $f =>" bit is optional, but can help with backtraces.)


Comment on Re: Silencing warnings inside C/XS
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (11)
As of 2014-12-26 10:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (171 votes), past polls