freebsd-ports/lang/perl5.8/files/patch-sv.c
Sergey Skvortsov b1b787bb65 Unbreak build of threaded perl.
PR:		ports/130529
Submitted by:	Shin-ichi Yoshimoto <yosimoto xx waishi.jp>
2009-01-14 08:16:24 +00:00

21 lines
674 B
C

--- sv.c
+++ sv.c
@@ -9813,7 +9813,8 @@ Perl_sv_dup(pTHX_ 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) {
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)
else {
SvPV_set(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;