summaryrefslogtreecommitdiff
path: root/cop.h
diff options
context:
space:
mode:
authorPerl 5 Porters <perl5-porters@africa.nicoh.com>1996-12-25 11:25:00 +1200
committerChip Salzenberg <chip@atlantic.net>1996-12-25 11:25:00 +1200
commit7a4c00b4303a05a04564a03a88f4fa5c7a06a6e9 (patch)
treeed0b5c9815e3415ad3fb0f0239c9dbcc595f6997 /cop.h
parentb0c42ed9ba0f4415d135379bc4867084c8c23f6a (diff)
downloadperl-7a4c00b4303a05a04564a03a88f4fa5c7a06a6e9.tar.gz
[inseparable changes from patch from perl5.003_15 to perl5.003_16]
CORE PORTABILITY Subject: _13: patches for unicos/unicosmk Date: Fri, 20 Dec 1996 14:38:50 -0600 From: Dean Roehrich <roehrich@cray.com> Files: Configure MANIFEST hints/unicos.sh hints/unicosmk.sh private-msgid: <199612202038.OAA22805@poplar.cray.com> LIBRARY AND EXTENSIONS Subject: Refresh IO to 1.14 From: Graham Barr <gbarr@ti.com> Files: MANIFEST ext/IO/IO.xs ext/IO/README ext/IO/lib/IO/File.pm ext/IO/lib/IO/Handle.pm ext/IO/lib/IO/Pipe.pm ext/IO/lib/IO/Seekable.pm ext/IO/lib/IO/Select.pm ext/IO/lib/IO/Socket.pm t/lib/io_dup.t t/lib/io_pipe.t t/lib/io_sel.t t/lib/io_sock.t t/lib/io_tell.t t/lib/io_udp.t t/lib/io_xs.t OTHER CORE CHANGES Subject: Fix 'foreach(@ARGV) { while (<>) { push @p,$_ } }' From: Chip Salzenberg <chip@atlantic.net> Files: cop.h pp_hot.c scope.c Subject: Eliminate warnings from C< undef $x; $x OP= "foo" > From: Chip Salzenberg <chip@atlantic.net> Files: doop.c pp.c pp.h pp_hot.c Subject: Try again to improve method caching Date: Mon, 23 Dec 1996 20:13:56 -0500 (EST) From: Ilya Zakharevich <ilya@math.ohio-state.edu> Files: gv.c sv.c Msg-ID: <199612240113.UAA09487@monk.mps.ohio-state.edu> (applied based on p5p patch as commit 81c78688fe5c3927ad37ba29de14c86e38120317) Subject: Be more careful about 'o' magic memory management From: Chip Salzenberg <chip@atlantic.net> Files: mg.c sv.c Subject: Fix bad pointer refs when localized object loses magic From: Chip Salzenberg <chip@atlantic.net> Files: scope.c
Diffstat (limited to 'cop.h')
-rw-r--r--cop.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/cop.h b/cop.h
index c062dc63e4..543c039f85 100644
--- a/cop.h
+++ b/cop.h
@@ -105,13 +105,16 @@ struct block_loop {
cx->blk_loop.next_op = cLOOP->op_nextop; \
cx->blk_loop.last_op = cLOOP->op_lastop; \
cx->blk_loop.iterlval = Nullsv; \
- cx->blk_loop.itervar = ivar; \
- if (ivar) \
- cx->blk_loop.itersave = *cx->blk_loop.itervar;
+ if (cx->blk_loop.itervar = (ivar)) \
+ cx->blk_loop.itersave = SvREFCNT_inc(*cx->blk_loop.itervar);
#define POPLOOP(cx) \
newsp = stack_base + cx->blk_loop.resetsp; \
- SvREFCNT_dec(cx->blk_loop.iterlval)
+ SvREFCNT_dec(cx->blk_loop.iterlval); \
+ if (cx->blk_loop.itervar) { \
+ SvREFCNT_dec(*cx->blk_loop.itervar); \
+ *cx->blk_loop.itervar = cx->blk_loop.itersave; \
+ }
/* context common to subroutines, evals and loops */
struct block {