commit a62e830ced0e3ee425e6f8be26624bdd5f504b73
parent d2edc2aa9bbdc52be6ff66e202634e3b28c8c35e
Author: default <nobody@localhost>
Date: Fri, 7 Oct 2022 09:46:23 +0200
abort() on realloc() error.
Diffstat:
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/xs.h b/xs.h
@@ -213,8 +213,18 @@ d_char *xs_expand(d_char *data, int offset, int size)
int n;
/* open room */
- if (sz == 0 || _xs_blk_size(sz) != _xs_blk_size(sz + size))
- data = realloc(data, _xs_blk_size(sz + size));
+ if (sz == 0 || _xs_blk_size(sz) != _xs_blk_size(sz + size)) {
+ d_char *ndata;
+
+ ndata = realloc(data, _xs_blk_size(sz + size));
+
+ if (ndata == NULL) {
+ fprintf(stderr, "**OUT OF MEMORY**");
+ abort();
+ }
+ else
+ data = ndata;
+ }
/* move up the rest of the data */
for (n = sz + size - 1; n >= offset + size; n--)