b1b787bb65
PR: ports/130529 Submitted by: Shin-ichi Yoshimoto <yosimoto xx waishi.jp>
21 lines
674 B
C
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;
|