X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl.c;h=8b045e05cbe2cca543b97de8222bb50542be8b09;hb=d2aeed1648166d254ac68525c35b77dec4ba8772;hp=11c316c47491d2a99713693204bd6ed2a9804c14;hpb=4f9115300b43ef6b5f7a27ee5faa266cbbca1243;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perl.c b/perl.c index 11c316c..8b045e0 100644 --- a/perl.c +++ b/perl.c @@ -2578,6 +2578,11 @@ Perl_call_sv(pTHX_ SV *sv, I32 flags) ENTER; SAVETMPS; } + if (!(flags & G_WANT)) { + /* Backwards compatibility - as G_SCALAR was 0, it could be omitted. + */ + flags |= G_SCALAR; + } Zero(&myop, 1, LOGOP); myop.op_next = NULL; @@ -2605,7 +2610,9 @@ Perl_call_sv(pTHX_ SV *sv, I32 flags) Zero(&method_op, 1, UNOP); method_op.op_next = PL_op; method_op.op_ppaddr = PL_ppaddr[OP_METHOD]; + method_op.op_type = OP_METHOD; myop.op_ppaddr = PL_ppaddr[OP_ENTERSUB]; + myop.op_type = OP_ENTERSUB; PL_op = (OP*)&method_op; } @@ -2650,7 +2657,7 @@ Perl_call_sv(pTHX_ SV *sv, I32 flags) goto redo_body; } PL_stack_sp = PL_stack_base + oldmark; - if (flags & G_ARRAY) + if ((flags & G_WANT) == G_ARRAY) retval = 0; else { retval = 1; @@ -2749,7 +2756,7 @@ Perl_eval_sv(pTHX_ SV *sv, I32 flags) goto redo_body; } PL_stack_sp = PL_stack_base + oldmark; - if (flags & G_ARRAY) + if ((flags & G_WANT) == G_ARRAY) retval = 0; else { retval = 1;