summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWerner Almesberger <werner@almesberger.net>2016-08-22 21:00:10 -0300
committerWerner Almesberger <werner@almesberger.net>2016-08-22 21:00:40 -0300
commitce690a463d1905b2aba8a04c29a248af66153681 (patch)
tree96072589d04ca8b1c536c6a0b5c8f58c7c2a21b1
parent8dfb6b2c9f722d70b30e5794fe20ce9450dd05d4 (diff)
downloadeeshow-ce690a463d1905b2aba8a04c29a248af66153681.tar.gz
eeshow-ce690a463d1905b2aba8a04c29a248af66153681.tar.bz2
eeshow-ce690a463d1905b2aba8a04c29a248af66153681.zip
eeshow/misc/util.h (realloc_size, realloc_type_n): get rid of bare "realloc"
Finally ! Shoulds have done this a long time ago.
-rw-r--r--file/git-hist.c6
-rw-r--r--gfx/cro.c4
-rw-r--r--gfx/fig.c2
-rw-r--r--gfx/pdftoc.c3
-rw-r--r--kicad/ext.c7
-rw-r--r--kicad/pl-render.c12
-rw-r--r--kicad/sch-parse.c4
-rw-r--r--kicad/sexpr.c4
-rw-r--r--misc/util.h12
9 files changed, 25 insertions, 29 deletions
diff --git a/file/git-hist.c b/file/git-hist.c
index 308d76c..3e3c171 100644
--- a/file/git-hist.c
+++ b/file/git-hist.c
@@ -46,10 +46,8 @@ static struct hist *new_commit(unsigned branch)
static void uplink(struct hist *down, struct hist *up)
{
- down->newer = realloc(down->newer,
- sizeof(struct hist *) * (down->n_newer + 1));
- if (!down->newer)
- diag_pfatal("realloc");
+ down->newer = realloc_type_n(down->newer, struct hist *,
+ down->n_newer + 1);
down->newer[down->n_newer++] = up;
}
diff --git a/gfx/cro.c b/gfx/cro.c
index 21cbda3..91e0ed4 100644
--- a/gfx/cro.c
+++ b/gfx/cro.c
@@ -404,9 +404,7 @@ static void cr_pdf_new_sheet(void *ctx)
struct cro_ctx *cc = ctx;
cc->n_sheets++;
- cc->sheets = realloc(cc->sheets, sizeof(struct record) * cc->n_sheets);
- if (!cc->sheets)
- diag_pfatal("realloc");
+ cc->sheets = realloc_type_n(cc->sheets, struct record, cc->n_sheets);
cc->sheets[cc->n_sheets - 1] = cc->record;
record_wipe(&cc->record);
}
diff --git a/gfx/fig.c b/gfx/fig.c
index fa1365c..41d4933 100644
--- a/gfx/fig.c
+++ b/gfx/fig.c
@@ -262,7 +262,7 @@ static void *fig_init(int argc, char *const *argv)
if (!strchr(argv[arg], '='))
usage(*argv);
n_vars++;
- vars = realloc(vars, sizeof(const char *) * n_vars);
+ vars = realloc_type_n(vars, const char *, n_vars);
vars[n_vars - 1] = argv[arg];
}
diff --git a/gfx/pdftoc.c b/gfx/pdftoc.c
index 5324823..cf45859 100644
--- a/gfx/pdftoc.c
+++ b/gfx/pdftoc.c
@@ -114,8 +114,7 @@ static void add_object(struct pdftoc *ctx, int id, int gen, unsigned pos)
struct object *obj;
if (id > ctx->top) {
- ctx->objs = realloc(ctx->objs,
- (id + 1) * sizeof(struct object));
+ ctx->objs = realloc_type_n(ctx->objs, struct object, id + 1);
memset(ctx->objs + ctx->top + 1 , 0,
(id - ctx->top) * sizeof(struct object));
ctx->top = id;
diff --git a/kicad/ext.c b/kicad/ext.c
index 961f231..15d4e75 100644
--- a/kicad/ext.c
+++ b/kicad/ext.c
@@ -13,6 +13,7 @@
#include <stdlib.h>
#include <string.h>
+#include "misc/util.h"
#include "misc/diag.h"
#include "kicad/ext.h"
@@ -68,10 +69,8 @@ void classify_files(struct file_names *fn, char *const *args,
break;
case ext_lib:
fn->n_libs++;
- fn->libs = realloc(fn->libs,
- fn->n_libs * sizeof(const char *));
- if (!fn->libs)
- diag_pfatal("realloc");
+ fn->libs = realloc_type_n(fn->libs, const char *,
+ fn->n_libs);
fn->libs[fn->n_libs - 1] = args[i];
break;
case ext_pl:
diff --git a/kicad/pl-render.c b/kicad/pl-render.c
index c3cea2a..386f719 100644
--- a/kicad/pl-render.c
+++ b/kicad/pl-render.c
@@ -109,9 +109,7 @@ static char *expand(const struct pl_ctx *pl, const char *s,
break;
}
len = strlen(x);
- res = realloc(res, size + p - s + len);
- if (!res)
- diag_pfatal("realloc");
+ res = realloc_size(res, size + p - s + len);
memcpy(res + size, s, p - s);
size += p - s;
s = p + 2;
@@ -120,9 +118,7 @@ static char *expand(const struct pl_ctx *pl, const char *s,
}
len = strlen(s);
- res = realloc(res, size + len + 1);
- if (!res)
- diag_pfatal("realloc");
+ res = realloc_size(res, size + len + 1);
memcpy(res + size, s, len + 1);
return res;
}
@@ -134,9 +130,7 @@ static char *increment(char *s, int inc, const char *range)
unsigned len = strlen(s);
int base, n;
- t = realloc(s, len + 2);
- if (!t)
- diag_perror("realloc");
+ t = realloc_size(s, len + 2);
t[len + 1] = 0;
base = range[1] - range[0] + 1;
diff --git a/kicad/sch-parse.c b/kicad/sch-parse.c
index 9cc3bbd..456ad13 100644
--- a/kicad/sch-parse.c
+++ b/kicad/sch-parse.c
@@ -149,9 +149,7 @@ static bool parse_field(struct sch_ctx *ctx, const char *line)
if (n == 0 && comp->comp && comp->comp->units > 1) {
len = strlen(txt->s);
- s = realloc((void *) txt->s, len + 3);
- if (!s)
- diag_pfatal("realloc");
+ s = realloc_size((void *) txt->s, len + 3);
if (comp->unit <= 26)
sprintf(s + len, "%c", 'A' + comp->unit - 1);
else
diff --git a/kicad/sexpr.c b/kicad/sexpr.c
index 0727891..6f0fd2f 100644
--- a/kicad/sexpr.c
+++ b/kicad/sexpr.c
@@ -83,9 +83,7 @@ static void add_string(struct sexpr_ctx *ctx, const char *end)
if (!new)
return;
- e->s = realloc(e->s, old + new + 1);
- if (!e->s)
- diag_pfatal("realloc");
+ e->s = realloc_size(e->s, old + new + 1);
memcpy(e->s + old, ctx->p, new);
e->s[old + new] = 0;
}
diff --git a/misc/util.h b/misc/util.h
index 657c6d0..e9bc4f3 100644
--- a/misc/util.h
+++ b/misc/util.h
@@ -30,6 +30,18 @@
#define alloc_type(t) ((t *) alloc_size(sizeof(t)))
#define alloc_type_n(t, n) ((t *) alloc_size(sizeof(t) * (n)))
+
+#define realloc_size(p, s) \
+ ({ void *alloc_size_tmp = realloc((p), (s)); \
+ if (!alloc_size_tmp) { \
+ perror("realloc"); \
+ exit(1); \
+ } \
+ alloc_size_tmp; })
+
+#define realloc_type_n(p, t, n) ((t *) realloc_size((p), sizeof(t) * (n)))
+
+
#define stralloc(s) \
({ char *stralloc_tmp = strdup(s); \
if (!stralloc_tmp) { \