Prevent unneeded memory allocation in Strgrow

This commit is contained in:
Tatsuya Kinoshita
2021-03-04 07:03:18 +09:00
parent 25252e64e4
commit 91731ec385

14
Str.c
View File

@@ -288,13 +288,15 @@ Strgrow(Str x)
if (x->length + 1 >= newlen) if (x->length + 1 >= newlen)
x->length = newlen - 2; x->length = newlen - 2;
} }
x->ptr = GC_MALLOC_ATOMIC(newlen); if (x->area_size < newlen) {
if (x->ptr == NULL) x->ptr = GC_MALLOC_ATOMIC(newlen);
exit(1); if (x->ptr == NULL)
x->area_size = newlen; exit(1);
bcopy((void *)old, (void *)x->ptr, x->length); x->area_size = newlen;
bcopy((void *)old, (void *)x->ptr, x->length);
GC_free(old);
}
x->ptr[x->length] = '\0'; x->ptr[x->length] = '\0';
GC_free(old);
} }
Str Str