diff --git a/av.c b/av.c index afac896dda8d..2ee0fc3ee65b 100644 --- a/av.c +++ b/av.c @@ -639,9 +639,11 @@ Perl_av_create_and_push(pTHX_ AV **const avp, SV *const val) { PERL_ARGS_ASSERT_AV_CREATE_AND_PUSH; - if (!*avp) - *avp = newAV(); - av_push(*avp, val); + if (!*avp) { + *avp = newAV_alloc_xz(4); + AvARRAY(*avp)[ ++AvFILLp(*avp) ] = val; + } else + av_push(*avp, val); } /* diff --git a/embed.fnc b/embed.fnc index 93801ec41f7b..e7c0cbb17504 100644 --- a/embed.fnc +++ b/embed.fnc @@ -639,7 +639,7 @@ ApdR |AV* |av_make |SSize_t size|NN SV **strp ApdR |AV* |av_new_alloc |SSize_t size|bool zeroflag p |SV* |av_nonelem |NN AV *av|SSize_t ix Apd |SV* |av_pop |NN AV *av -Apdoex |void |av_create_and_push|NN AV **const avp|NN SV *const val +Apdoe |void |av_create_and_push|NN AV **const avp|NN SV *const val Apd |void |av_push |NN AV *av|NN SV *val : Used in scope.c, and by Data::Alias EXp |void |av_reify |NN AV *av