summaryrefslogtreecommitdiff
path: root/pp_ctl.c
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>1997-11-22 16:30:27 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>1997-11-22 16:30:27 +0000
commitf81342c8ed56420002f9ad172de0b7485a7c6b96 (patch)
tree921a34f0d4476503ddbf328e789517d6cfd07e42 /pp_ctl.c
parenta868473fb9213692497e27ae968094b32a41c501 (diff)
parent0da4822f11e97ce202166899552c06d720eb835a (diff)
downloadperl-f81342c8ed56420002f9ad172de0b7485a7c6b96.tar.gz
Resolve ansiperl against win32
p4raw-id: //depot/ansiperl@278
Diffstat (limited to 'pp_ctl.c')
-rw-r--r--pp_ctl.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/pp_ctl.c b/pp_ctl.c
index dadc145a22..48876909f9 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -546,14 +546,17 @@ PP(pp_grepstart)
ENTER; /* enter outer scope */
SAVETMPS;
- SAVESPTR(GvSV(defgv));
-
+#if 0
+ SAVE_DEFSV;
+#else
+ save_sptr(av_fetch(thr->threadsv, find_threadsv("_"), FALSE));
+#endif
ENTER; /* enter inner scope */
SAVESPTR(curpm);
src = stack_base[*markstack_ptr];
SvTEMP_off(src);
- GvSV(defgv) = src;
+ DEFSV = src;
PUTBACK;
if (op->op_type == OP_MAPSTART)
@@ -623,7 +626,7 @@ PP(pp_mapwhile)
src = stack_base[markstack_ptr[-1]];
SvTEMP_off(src);
- GvSV(defgv) = src;
+ DEFSV = src;
RETURNOP(cLOGOP->op_other);
}
@@ -1334,12 +1337,19 @@ PP(pp_enteriter)
ENTER;
SAVETMPS;
- if (op->op_targ)
- svp = &curpad[op->op_targ]; /* "my" variable */
+#ifdef USE_THREADS
+ if (op->op_flags & OPf_SPECIAL)
+ svp = save_threadsv(op->op_targ); /* per-thread variable */
else
+#endif /* USE_THREADS */
+ if (op->op_targ) {
+ svp = &curpad[op->op_targ]; /* "my" variable */
+ SAVESPTR(*svp);
+ }
+ else {
svp = &GvSV((GV*)POPs); /* symbol table variable */
-
- SAVESPTR(*svp);
+ SAVESPTR(*svp);
+ }
ENTER;