1 Index: src/modules/perl/mod_perl.h
2 ===================================================================
3 --- src/modules/perl/mod_perl.h (revision 607690)
4 +++ src/modules/perl/mod_perl.h (working copy)
6 /* betting on Perl*Handlers not using CvXSUBANY
7 * mod_perl reuses this field for handler attributes
9 -#define MP_CODE_ATTRS(cv) (CvXSUBANY((CV*)cv).any_i32)
10 +U16 *mp_code_attrs(pTHX_ CV *cv);
11 +#define MP_CODE_ATTRS(cv) (*mp_code_attrs(aTHX_ cv))
13 #define MgTypeExt(mg) (mg->mg_type == '~')
15 Index: src/modules/perl/modperl_mgv.c
16 ===================================================================
17 --- src/modules/perl/modperl_mgv.c (revision 607694)
18 +++ src/modules/perl/modperl_mgv.c (working copy)
22 if ((cv = get_cv(name, FALSE))) {
23 - handler->attrs = (U32)MP_CODE_ATTRS(cv);
24 + handler->attrs = MP_CODE_ATTRS(cv);
26 modperl_mgv_compile(aTHX_ p, HvNAME(GvSTASH(CvGV(cv))));
27 modperl_mgv_append(aTHX_ p, handler->mgv_cv, GvNAME(CvGV(cv)));
29 modperl_mgv_new_name(handler->mgv_obj, p, name);
32 - handler->attrs = (U32)MP_CODE_ATTRS(cv);
33 + handler->attrs = MP_CODE_ATTRS(cv);
34 /* note: this is the real function after @ISA lookup */
35 handler->mgv_cv = modperl_mgv_compile(aTHX_ p, HvNAME(GvSTASH(gv)));
36 modperl_mgv_append(aTHX_ p, handler->mgv_cv, handler_name);
37 Index: src/modules/perl/modperl_types.h
38 ===================================================================
39 --- src/modules/perl/modperl_types.h (revision 607690)
40 +++ src/modules/perl/modperl_types.h (working copy)
47 modperl_handler_t *next;
50 Index: src/modules/perl/modperl_util.c
51 ===================================================================
52 --- src/modules/perl/modperl_util.c (revision 607694)
53 +++ src/modules/perl/modperl_util.c (working copy)
54 Index: xs/Apache2/Filter/Apache2__Filter.h
56 return retval ? SvREFCNT_inc(retval) : &PL_sv_undef;
59 +U16 *mp_code_attrs(pTHX_ CV *cv) {
62 + if (!SvMAGICAL(cv)) {
63 + sv_magic((SV*)cv, Nullsv, PERL_MAGIC_ext, NULL, -1);
66 + mg = mg_find((SV*)cv, PERL_MAGIC_ext);
67 + return &(mg->mg_private);
69 ===================================================================
70 --- xs/Apache2/Filter/Apache2__Filter.h (revision 607694)
71 +++ xs/Apache2/Filter/Apache2__Filter.h (working copy)
76 -static MP_INLINE U32 *modperl_filter_attributes(SV *package, SV *cvrv)
77 +static MP_INLINE U16 *modperl_filter_attributes(pTHX_ SV *package, SV *cvrv)
79 - return (U32 *)&MP_CODE_ATTRS(SvRV(cvrv));
80 + return &MP_CODE_ATTRS(SvRV(cvrv));
85 MP_STATIC XS(MPXS_modperl_filter_attributes)
88 - U32 *attrs = modperl_filter_attributes(ST(0), ST(1));
89 + U16 *attrs = modperl_filter_attributes(aTHX_ ST(0), ST(1));
92 HV *stash = gv_stashsv(ST(0), TRUE);