According to POSIX, if realloc() fails to allocate a new chunk of memory
it returns NULL and does not free the original pointer.
Using a separate pointer in order to preserve the original one.
{
int fd;
char *file;
- u_char buf[4096], *p, *end;
+ u_char buf[4096], *p, *end, *start;
size_t size;
ssize_t n;
njs_vm_t *vm;
if (p + n > end) {
size *= 2;
- script.start = realloc(script.start, size);
- if (script.start == NULL) {
+ start = realloc(script.start, size);
+ if (start == NULL) {
fprintf(stderr, "alloc failed while reading '%s'\n", file);
ret = NXT_ERROR;
goto done;
}
+ script.start = start;
+
p = script.start + script.length;
end = script.start + size;
}