From: Anno Siegel Date: Wed, 12 Jul 2006 00:45:44 +0000 (+0200) Subject: Re: [PATCH] FieldHash coverity-compliant X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=91dba0be91f1c35e9474de79c0592c0c8d8379dc;p=p5sagit%2Fp5-mst-13.2.git Re: [PATCH] FieldHash coverity-compliant Message-Id: <7AEBF247-0AF7-46A8-9D61-D38B45FD21EA@mailbox.tu-berlin.de> p4raw-id: //depot/perl@28552 --- diff --git a/ext/Hash/Util/FieldHash/FieldHash.xs b/ext/Hash/Util/FieldHash/FieldHash.xs index 91107dd..faddb96 100644 --- a/ext/Hash/Util/FieldHash/FieldHash.xs +++ b/ext/Hash/Util/FieldHash/FieldHash.xs @@ -20,14 +20,23 @@ START_MY_CXT /* Inquire the object registry (a lexical hash) from perl */ HV* HUF_get_ob_reg(void) { dSP; + HV* ob_reg = NULL; + ENTER; + SAVETMPS; + + PUSHMARK(SP); I32 items = call_pv(HUF_OB_REG, G_SCALAR|G_NOARGS); SPAGAIN; - if (items == 1) { - SV* ref = POPs; - PUTBACK; - if (ref && SvROK(ref) && SvTYPE(SvRV(ref)) == SVt_PVHV) - return (HV*)SvRV(ref); + + if (items == 1 && TOPs && SvROK(TOPs) && SvTYPE(SvRV(TOPs)) == SVt_PVHV) { + ob_reg = (HV*)SvRV(POPs); } + PUTBACK; + FREETMPS; + LEAVE; + + if (ob_reg) + return ob_reg; Perl_die(aTHX_ "Can't get object registry hash"); }