blob: aeb160db81bd6443d36c47af34db193844f20a01 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
--- 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;
|