Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
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.)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://998256]
help
Chatterbox?
[Discipulus]: choroba the Tk client print out an educated error message that it cant connect..
[Discipulus]: Can't connect to www.perlmonks.org: 80Invalid argument at ..perl5.26.64bit/ perl/vendor/lib/ LWP/Protocol/http. pm line 46, <__ANONIO__> line 34500.
[Corion]: Discipulus: That's weird, but maybe one of the machines is still wonky. I haven't looked :-/

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (7)
As of 2017-10-24 10:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My fridge is mostly full of:

















    Results (288 votes). Check out past polls.

    Notices?