develooper Front page | perl.perl5.porters | Postings from September 2016

Re: [perl #125792] [2 PATCHES] sassign is wrongly declared as BASEOP

Thread Previous | Thread Next
Dave Mitchell
September 29, 2016 16:35
Re: [perl #125792] [2 PATCHES] sassign is wrongly declared as BASEOP
Message ID:
On Wed, Aug 12, 2015 at 05:38:28PM -0700, Tony Cook via RT wrote:
> On Wed Aug 12 01:31:29 2015, wrote:
> > 
> > This is a bug report for perl from,
> > generated with the help of perlbug 1.40 running under perl 5.23.2.
> Fails early when built with -DPERL_OP_PARENT:
> cc -fstack-protector -L/usr/local/lib -o miniperl \
>             perlmini.o opmini.o miniperlmain.o  gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o caretx.o dquote.o time64.o   -lpthread -lnsl -ldl -lm -lcrypt -lutil -lc 
> ./miniperl -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
> miniperl: op.c:2566: S_finalize_op: Assertion `kid == ((LISTOP*)(o))->op_last' failed.
> Aborted
> Failed to build miniperl. Please run make minitest

I've now applied these two commits, along with:
* a temporary hack to the first commit to make it work under
  PERL_OP_PARENT (now the default);
* a third commit which for an OP_SASSIGN with a single arg, sets
  op_last to be equal to op_first rather than NULL, and so allows the
  temporary hack and the special-casing in S_finalize_op to be removed.
I also added some extra commentary to the two commit messages.

    1257c08 sassign is wrongly declared as BASEOP, not BINOP.
    354eabf sassign was used as UNOP, optimize {or,and,dor}assign
    35a2929 OP_SASSIGN: make op_first==op_last for UNOP

This email is confidential, and now that you have read it you are legally
obliged to shoot yourself. Or shoot a lawyer, if you prefer. If you have
received this email in error, place it in its original wrapping and return
for a full refund. By opening this email, you accept that Elvis lives.

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About