Return-Path: Delivered-To: apmail-perl-modperl-cvs-archive@www.apache.org Received: (qmail 33964 invoked from network); 16 Dec 2005 21:20:49 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 16 Dec 2005 21:20:49 -0000 Received: (qmail 1510 invoked by uid 500); 16 Dec 2005 21:20:49 -0000 Delivered-To: apmail-perl-modperl-cvs-archive@perl.apache.org Received: (qmail 1485 invoked by uid 500); 16 Dec 2005 21:20:48 -0000 Mailing-List: contact modperl-cvs-help@perl.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@perl.apache.org List-Id: Delivered-To: mailing list modperl-cvs@perl.apache.org Received: (qmail 1458 invoked by uid 99); 16 Dec 2005 21:20:48 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 Dec 2005 13:20:48 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Fri, 16 Dec 2005 13:20:46 -0800 Received: (qmail 33862 invoked by uid 65534); 16 Dec 2005 21:20:26 -0000 Message-ID: <20051216212026.33861.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r357236 - /perl/modperl/trunk/src/modules/perl/modperl_env.c Date: Fri, 16 Dec 2005 21:20:26 -0000 To: modperl-cvs@perl.apache.org From: gozer@apache.org X-Mailer: svnmailer-1.0.5 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: gozer Date: Fri Dec 16 13:20:23 2005 New Revision: 357236 URL: http://svn.apache.org/viewcvs?rev=357236&view=rev Log: "local %ENV;" caused Segmentation fault in modperl_env_request_tie() Reported-By: Peter Walsham Thread: http://thread.gmane.org/gmane.comp.apache.mod-perl/22236 Modified: perl/modperl/trunk/src/modules/perl/modperl_env.c Modified: perl/modperl/trunk/src/modules/perl/modperl_env.c URL: http://svn.apache.org/viewcvs/perl/modperl/trunk/src/modules/perl/modperl_env.c?rev=357236&r1=357235&r2=357236&view=diff ============================================================================== --- perl/modperl/trunk/src/modules/perl/modperl_env.c (original) +++ perl/modperl/trunk/src/modules/perl/modperl_env.c Fri Dec 16 13:20:23 2005 @@ -15,8 +15,13 @@ #include "mod_perl.h" -#define EnvMgObj SvMAGIC((SV*)ENVHV)->mg_ptr -#define EnvMgLen SvMAGIC((SV*)ENVHV)->mg_len +#define EnvMgOK ((SV*)ENVHV && SvMAGIC((SV*)ENVHV)) +#define EnvMgObj (EnvMgOK ? SvMAGIC((SV*)ENVHV)->mg_ptr : NULL) +#define EnvMgLen (EnvMgOK ? SvMAGIC((SV*)ENVHV)->mg_len : 0) +#define EnvMgObjSet(val){ \ + if (EnvMgOK) SvMAGIC((SV*)ENVHV)->mg_ptr = (char *)val;} +#define EnvMgLenSet(val) {\ + if (EnvMgOK) SvMAGIC((SV*)ENVHV)->mg_len = val;} /* XXX: move to utils? */ static unsigned long modperl_interp_address(pTHX) @@ -401,8 +406,8 @@ void modperl_env_request_tie(pTHX_ request_rec *r) { - EnvMgObj = (char *)r; - EnvMgLen = -1; + EnvMgObjSet(r); + EnvMgLenSet(-1); #ifdef MP_PERL_HV_GMAGICAL_AWARE MP_TRACE_e(MP_FUNC, "[%s/0x%lx] tie %%ENV, $r\n\t (%s%s)", @@ -414,7 +419,7 @@ void modperl_env_request_untie(pTHX_ request_rec *r) { - EnvMgObj = NULL; + EnvMgObjSet(NULL); #ifdef MP_PERL_HV_GMAGICAL_AWARE MP_TRACE_e(MP_FUNC, "[%s/0x%lx] untie %%ENV; # from r\n\t (%s%s)",