@@ -278,11 +278,11 @@ S_emulate_eaccess(pTHX_ const char* path, Mode_t mode)
278
278
# define PERL_EFF_ACCESS (p ,f ) (S_emulate_eaccess(aTHX_ (p), (f)))
279
279
#endif
280
280
281
- PP_wrapped (pp_backtick , 1 , 0 )
281
+ PP (pp_backtick )
282
282
{
283
- dSP ; dTARGET ;
283
+ dTARGET ;
284
284
PerlIO * fp ;
285
- const char * const tmps = POPpconstx ;
285
+ const char * const tmps = SvPV_nolen ( * PL_stack_sp ) ;
286
286
const U8 gimme = GIMME_V ;
287
287
const char * mode = "r" ;
288
288
@@ -292,6 +292,7 @@ PP_wrapped(pp_backtick, 1, 0)
292
292
else if (PL_op -> op_private & OPpOPEN_IN_CRLF )
293
293
mode = "rt" ;
294
294
fp = PerlProc_popen (tmps , mode );
295
+ rpp_popfree_1 ();
295
296
if (fp ) {
296
297
const char * const type = Perl_PerlIO_context_layers (aTHX_ NULL );
297
298
if (type && * type )
@@ -310,7 +311,7 @@ PP_wrapped(pp_backtick, 1, 0)
310
311
while (sv_gets (TARG , fp , SvCUR (TARG )) != NULL )
311
312
NOOP ;
312
313
LEAVE_with_name ("backtick" );
313
- XPUSHs (TARG );
314
+ rpp_push_1 (TARG );
314
315
SvTAINTED_on (TARG );
315
316
}
316
317
else {
@@ -320,7 +321,8 @@ PP_wrapped(pp_backtick, 1, 0)
320
321
SvREFCNT_dec (sv );
321
322
break ;
322
323
}
323
- mXPUSHs (sv );
324
+ rpp_extend (1 );
325
+ rpp_push_1_norc (sv );
324
326
if (SvLEN (sv ) - SvCUR (sv ) > 20 ) {
325
327
SvPV_shrink_to_cur (sv );
326
328
}
@@ -333,10 +335,10 @@ PP_wrapped(pp_backtick, 1, 0)
333
335
else {
334
336
STATUS_NATIVE_CHILD_SET (-1 );
335
337
if (gimme == G_SCALAR )
336
- RETPUSHUNDEF ;
338
+ rpp_push_1 ( & PL_sv_undef ) ;
337
339
}
338
340
339
- RETURN ;
341
+ return NORMAL ;
340
342
}
341
343
342
344
0 commit comments