dougm 01/09/28 12:53:22
Modified: src/modules/perl modperl_perl_global.c modperl_perl_global.h
Log:
use the address of sv for modperl_perl_global_svpv_t, since it might point to a
different SV when restore happens
Revision Changes Path
1.3 +4 -4 modperl-2.0/src/modules/perl/modperl_perl_global.c
Index: modperl_perl_global.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_global.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- modperl_perl_global.c 2001/09/28 19:24:44 1.2
+++ modperl_perl_global.c 2001/09/28 19:53:22 1.3
@@ -5,7 +5,7 @@
globals->env.gv = PL_envgv;
globals->inc.gv = PL_incgv;
globals->defout.gv = PL_defoutgv;
- globals->rs.sv = PL_rs;
+ globals->rs.sv = &PL_rs;
}
static void
@@ -92,14 +92,14 @@
static void
modperl_perl_global_svpv_save(pTHX_ modperl_perl_global_svpv_t *svpv)
{
- svpv->cur = SvCUR(svpv->sv);
- strncpy(svpv->pv, SvPVX(svpv->sv), sizeof(svpv->pv));
+ svpv->cur = SvCUR(*svpv->sv);
+ strncpy(svpv->pv, SvPVX(*svpv->sv), sizeof(svpv->pv));
}
static void
modperl_perl_global_svpv_restore(pTHX_ modperl_perl_global_svpv_t *svpv)
{
- sv_setpvn(svpv->sv, svpv->pv, svpv->cur);
+ sv_setpvn(*svpv->sv, svpv->pv, svpv->cur);
}
typedef enum {
1.3 +1 -1 modperl-2.0/src/modules/perl/modperl_perl_global.h
Index: modperl_perl_global.h
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_global.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- modperl_perl_global.h 2001/09/28 19:24:44 1.2
+++ modperl_perl_global.h 2001/09/28 19:53:22 1.3
@@ -19,7 +19,7 @@
} modperl_perl_global_gvio_t;
typedef struct {
- SV *sv;
+ SV **sv;
char pv[256]; /* XXX: only need enough for $/ at the moment */
I32 cur;
} modperl_perl_global_svpv_t;