File tree Expand file tree Collapse file tree 3 files changed +15
-5
lines changed Expand file tree Collapse file tree 3 files changed +15
-5
lines changed Original file line number Diff line number Diff line change @@ -3525,6 +3525,13 @@ Perl_padname_refcnt_inc(PADNAME *pn)
3525
3525
return pn ;
3526
3526
}
3527
3527
3528
+ PERL_STATIC_INLINE PADNAMELIST *
3529
+ Perl_padnamelist_refcnt_inc (PADNAMELIST * pnl )
3530
+ {
3531
+ PadnamelistREFCNT (pnl )++ ;
3532
+ return pnl ;
3533
+ }
3534
+
3528
3535
/* copy a string to a safe spot */
3529
3536
3530
3537
/*
Original file line number Diff line number Diff line change @@ -2504,9 +2504,7 @@ Perl_padlist_dup(pTHX_ PADLIST *srcpad, CLONE_PARAMS *param)
2504
2504
PadlistMAX (dstpad ) = max ;
2505
2505
Newx (PadlistARRAY (dstpad ), max + 1 , PAD * );
2506
2506
2507
- PadlistARRAY (dstpad )[0 ] = (PAD * )
2508
- padnamelist_dup (PadlistNAMES (srcpad ), param );
2509
- PadnamelistREFCNT (PadlistNAMES (dstpad ))++ ;
2507
+ PadlistARRAY (dstpad )[0 ] = (PAD * )padnamelist_dup_inc (PadlistNAMES (srcpad ), param );
2510
2508
if (cloneall ) {
2511
2509
PADOFFSET depth ;
2512
2510
for (depth = 1 ; depth <= max ; ++ depth )
@@ -2740,8 +2738,7 @@ Perl_padnamelist_dup(pTHX_ PADNAMELIST *srcpad, CLONE_PARAMS *param)
2740
2738
for (; max >= 0 ; max -- )
2741
2739
if (PadnamelistARRAY (srcpad )[max ]) {
2742
2740
PadnamelistARRAY (dstpad )[max ] =
2743
- padname_dup (PadnamelistARRAY (srcpad )[max ], param );
2744
- PadnameREFCNT_inc (PadnamelistARRAY (dstpad )[max ]);
2741
+ padname_dup_inc (PadnamelistARRAY (srcpad )[max ], param );
2745
2742
}
2746
2743
2747
2744
return dstpad ;
Original file line number Diff line number Diff line change @@ -330,6 +330,7 @@ Restore the old pad saved into the local variable C<opad> by C<PAD_SAVE_LOCAL()>
330
330
#define PadnamelistMAX (pnl ) (pnl)->xpadnl_fill
331
331
#define PadnamelistMAXNAMED (pnl ) (pnl)->xpadnl_max_named
332
332
#define PadnamelistREFCNT (pnl ) (pnl)->xpadnl_refcnt
333
+ #define PadnamelistREFCNT_inc (pnl ) Perl_padnamelist_refcnt_inc(pnl)
333
334
#define PadnamelistREFCNT_dec (pnl ) Perl_padnamelist_free(aTHX_ pnl)
334
335
335
336
#define PadARRAY (pad ) AvARRAY(pad)
@@ -387,6 +388,11 @@ Restore the old pad saved into the local variable C<opad> by C<PAD_SAVE_LOCAL()>
387
388
# define PADNAMEt_OUR PADNAMEf_OUR
388
389
#endif
389
390
391
+ #ifdef USE_ITHREADS
392
+ # define padnamelist_dup_inc (pnl ,param ) PadnamelistREFCNT_inc(padnamelist_dup(pnl,param))
393
+ # define padname_dup_inc (pn ,param ) PadnameREFCNT_inc(padname_dup(pn,param))
394
+ #endif
395
+
390
396
#ifdef DEBUGGING
391
397
# define PAD_SV (po ) pad_sv(po)
392
398
# define PAD_SETSV (po ,sv ) pad_setsv(po,sv)
You can’t perform that action at this time.
0 commit comments