diff options
Diffstat (limited to 'lang/perl5.12/files/patch-sv.c')
-rw-r--r-- | lang/perl5.12/files/patch-sv.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lang/perl5.12/files/patch-sv.c b/lang/perl5.12/files/patch-sv.c index 4a4a6d840d26..5ee260a4b4bd 100644 --- a/lang/perl5.12/files/patch-sv.c +++ b/lang/perl5.12/files/patch-sv.c @@ -1,21 +1,21 @@ --- sv.c +++ sv.c -@@ -9813,7 +9813,8 @@ Perl_sv_dup(pTHX_ SV *sstr, CLONE_PARAMS* param) +@@ -10421,7 +10421,8 @@ Perl_sv_dup(pTHX_ const SV *sstr, CLONE_PARAMS* param) IoBOTTOM_NAME(dstr) = SAVEPV(IoBOTTOM_NAME(dstr)); break; case SVt_PVAV: - if (AvARRAY((AV*)sstr)) { + /* avoid cloning an empty array */ -+ if (AvARRAY((AV*)sstr) && AvFILLp((AV*)sstr) >= 0) { ++ if (AvARRAY((AV *)sstr) && AvFILLp((AV *)sstr) >= 0) { SV **dst_ary, **src_ary; SSize_t items = AvFILLp((AV*)sstr) + 1; -@@ -9838,6 +9839,8 @@ Perl_sv_dup(pTHX_ SV *sstr, CLONE_PARAMS* param) +@@ -10446,6 +10447,8 @@ Perl_sv_dup(pTHX_ const SV *sstr, CLONE_PARAMS* param) else { - SvPV_set(dstr, NULL); + AvARRAY((AV*)dstr) = NULL; AvALLOC((AV*)dstr) = (SV**)NULL; + AvMAX( (AV *)dstr) = -1; + AvFILLp((AV *)dstr) = -1; } - AvARYLEN((AV*)dstr) = sv_dup_inc(AvARYLEN((AV*)sstr), param); break; + case SVt_PVHV: |