dougm 02/03/23 18:36:41 Modified: src/modules/perl modperl_io.c Log: figure out which tiehandle SV to use at compile as 1.x does, rather than at runtime Revision Changes Path 1.7 +12 -10 modperl-2.0/src/modules/perl/modperl_io.c Index: modperl_io.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_io.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- modperl_io.c 8 Jan 2002 19:04:22 -0000 1.6 +++ modperl_io.c 24 Mar 2002 02:36:41 -0000 1.7 @@ -1,5 +1,11 @@ #include "mod_perl.h" +#if ((PERL_REVISION == 5) && (PERL_VERSION >= 7)) +# define TIEHANDLE_SV(handle) (SV*)GvIOp((SV*)handle) +#else +# define TIEHANDLE_SV(handle) (SV*)handle +#endif + #define dHANDLE(name) GV *handle = gv_fetchpv(name, TRUE, SVt_PVIO) #define TIEHANDLE(handle,r) \ @@ -16,20 +22,17 @@ MP_INLINE void modperl_io_handle_untie(pTHX_ GV *handle) { #ifdef MP_TRACE - if (mg_find((SV*)handle, 'q') || - mg_find((SV*)GvIOp(handle), 'q')) - { + if (mg_find(TIEHANDLE_SV(handle), 'q')) { MP_TRACE_g(MP_FUNC, "untie *%s(0x%lx), REFCNT=%d\n", GvNAME(handle), (unsigned long)handle, - SvREFCNT((SV*)handle)); + SvREFCNT(TIEHANDLE_SV(handle))); } else { return; } #endif - sv_unmagic((SV*)handle, 'q'); - sv_unmagic((SV*)GvIOp(handle), 'q'); + sv_unmagic(TIEHANDLE_SV(handle), 'q'); } MP_INLINE void modperl_io_handle_tie(pTHX_ GV *handle, @@ -39,20 +42,19 @@ modperl_io_handle_untie(aTHX_ handle); - sv_magic((SV*)handle, obj, 'q', Nullch, 0); - sv_magic((SV*)GvIOp(handle), obj, 'q', Nullch, 0); + sv_magic(TIEHANDLE_SV(handle), obj, 'q', Nullch, 0); SvREFCNT_dec(obj); /* since sv_magic did SvREFCNT_inc */ MP_TRACE_g(MP_FUNC, "tie *%s(0x%lx) => %s, REFCNT=%d\n", GvNAME(handle), (unsigned long)handle, classname, - SvREFCNT((SV*)handle)); + SvREFCNT(TIEHANDLE_SV(handle))); } MP_INLINE int modperl_io_handle_tied(pTHX_ GV *handle, char *classname) { MAGIC *mg; - SV *sv = SvMAGICAL(GvIOp(handle)) ? (SV*)GvIOp(handle) : (SV*)handle; + SV *sv = TIEHANDLE_SV(handle); if (SvMAGICAL(sv) && (mg = mg_find(sv, 'q'))) { char *package = HvNAME(SvSTASH((SV*)SvRV(mg->mg_obj)));