}
else {
if (AvALLOC(av)) {
+#ifndef STRANGE_MALLOC
+ U32 bytes;
+#endif
+
newmax = key + AvMAX(av) / 5;
resize:
+#ifdef STRANGE_MALLOC
Renew(AvALLOC(av),newmax+1, SV*);
+#else
+ bytes = (newmax + 1) * sizeof(SV*);
+#define MALLOC_OVERHEAD 16
+ tmp = MALLOC_OVERHEAD;
+ while (tmp - MALLOC_OVERHEAD < bytes)
+ tmp += tmp;
+ tmp -= MALLOC_OVERHEAD;
+ tmp /= sizeof(SV*);
+ assert(tmp > newmax);
+ newmax = tmp - 1;
+ New(2,ary, newmax+1, SV*);
+ Copy(AvALLOC(av), ary, AvMAX(av)+1, SV*);
+ if (AvMAX(av) > 64 && !nice_chunk) {
+ nice_chunk = (char*)AvALLOC(av);
+ nice_chunk_size = (AvMAX(av) + 1) * sizeof(SV*);
+ }
+ else
+ Safefree(AvALLOC(av));
+ AvALLOC(av) = ary;
+#endif
ary = AvALLOC(av) + AvMAX(av) + 1;
tmp = newmax - AvMAX(av);
if (av == stack) { /* Oops, grew stack (via av_store()?) */