From: Elan Ruusamäe Date: Sun, 24 Feb 2008 11:34:39 +0000 (+0000) Subject: - perl 5.10 fix X-Git-Tag: auto/th/apache-mod_perl-2_0_3-8~3 X-Git-Url: https://git.pld-linux.org/?p=packages%2Fapache-mod_perl.git;a=commitdiff_plain;h=89e064d19c17a098c4cba09ff35631fb6259390f - perl 5.10 fix http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=462994 http://www.mail-archive.com/dev%40perl.apache.org/msg11916.html Changed files: apache-mod_perl-magic.patch -> 1.1 --- diff --git a/apache-mod_perl-magic.patch b/apache-mod_perl-magic.patch new file mode 100644 index 0000000..c7f9ca1 --- /dev/null +++ b/apache-mod_perl-magic.patch @@ -0,0 +1,93 @@ +Index: src/modules/perl/mod_perl.h +=================================================================== +--- src/modules/perl/mod_perl.h (revision 607690) ++++ src/modules/perl/mod_perl.h (working copy) +@@ -141,7 +141,8 @@ + /* betting on Perl*Handlers not using CvXSUBANY + * mod_perl reuses this field for handler attributes + */ +-#define MP_CODE_ATTRS(cv) (CvXSUBANY((CV*)cv).any_i32) ++U16 *mp_code_attrs(pTHX_ CV *cv); ++#define MP_CODE_ATTRS(cv) (*mp_code_attrs(aTHX_ cv)) + + #define MgTypeExt(mg) (mg->mg_type == '~') + +Index: src/modules/perl/modperl_mgv.c +=================================================================== +--- src/modules/perl/modperl_mgv.c (revision 607694) ++++ src/modules/perl/modperl_mgv.c (working copy) +@@ -271,7 +271,7 @@ + } + else { + if ((cv = get_cv(name, FALSE))) { +- handler->attrs = (U32)MP_CODE_ATTRS(cv); ++ handler->attrs = MP_CODE_ATTRS(cv); + handler->mgv_cv = + modperl_mgv_compile(aTHX_ p, HvNAME(GvSTASH(CvGV(cv)))); + modperl_mgv_append(aTHX_ p, handler->mgv_cv, GvNAME(CvGV(cv))); +@@ -334,7 +334,7 @@ + modperl_mgv_new_name(handler->mgv_obj, p, name); + } + +- handler->attrs = (U32)MP_CODE_ATTRS(cv); ++ handler->attrs = MP_CODE_ATTRS(cv); + /* note: this is the real function after @ISA lookup */ + handler->mgv_cv = modperl_mgv_compile(aTHX_ p, HvNAME(GvSTASH(gv))); + modperl_mgv_append(aTHX_ p, handler->mgv_cv, handler_name); +Index: src/modules/perl/modperl_types.h +=================================================================== +--- src/modules/perl/modperl_types.h (revision 607690) ++++ src/modules/perl/modperl_types.h (working copy) +@@ -195,7 +195,7 @@ + const char *name; + CV *cv; + U8 flags; +- U32 attrs; ++ U16 attrs; + modperl_handler_t *next; + }; + +Index: src/modules/perl/modperl_util.c +=================================================================== +--- src/modules/perl/modperl_util.c (revision 607694) ++++ src/modules/perl/modperl_util.c (working copy) +Index: xs/Apache2/Filter/Apache2__Filter.h +@@ -903,3 +903,13 @@ + return retval ? SvREFCNT_inc(retval) : &PL_sv_undef; + } + ++U16 *mp_code_attrs(pTHX_ CV *cv) { ++ MAGIC *mg; ++ ++ if (!SvMAGICAL(cv)) { ++ sv_magic((SV*)cv, Nullsv, PERL_MAGIC_ext, NULL, -1); ++ } ++ ++ mg = mg_find((SV*)cv, PERL_MAGIC_ext); ++ return &(mg->mg_private); ++} +=================================================================== +--- xs/Apache2/Filter/Apache2__Filter.h (revision 607694) ++++ xs/Apache2/Filter/Apache2__Filter.h (working copy) +@@ -86,9 +86,9 @@ + return len; + } + +-static MP_INLINE U32 *modperl_filter_attributes(SV *package, SV *cvrv) ++static MP_INLINE U16 *modperl_filter_attributes(pTHX_ SV *package, SV *cvrv) + { +- return (U32 *)&MP_CODE_ATTRS(SvRV(cvrv)); ++ return &MP_CODE_ATTRS(SvRV(cvrv)); + } + + #ifdef MP_TRACE +@@ -118,7 +118,7 @@ + MP_STATIC XS(MPXS_modperl_filter_attributes) + { + dXSARGS; +- U32 *attrs = modperl_filter_attributes(ST(0), ST(1)); ++ U16 *attrs = modperl_filter_attributes(aTHX_ ST(0), ST(1)); + I32 i; + #ifdef MP_TRACE + HV *stash = gv_stashsv(ST(0), TRUE); +