X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ftab.c;h=4aa7f069bc0cdceb43e426ca0d938aa16bc24091;hb=92fb12eb06716d14c05b781f5d9dcde956d77c30;hp=fdcf0013e1ff98c77f71ea9f1bbfab625770ed77;hpb=397e4b99a356c51cab364f14373c15982db14d87;p=pspp diff --git a/src/tab.c b/src/tab.c index fdcf0013e1..4aa7f069bc 100644 --- a/src/tab.c +++ b/src/tab.c @@ -34,6 +34,9 @@ #include "som.h" #include "var.h" +#include "gettext.h" +#define _(msgid) gettext (msgid) + #include "debug-print.h" struct som_table_class tab_table_class; @@ -44,7 +47,8 @@ struct som_table_class tab_table_class; struct tab_table * tab_create (int nc, int nr, int reallocable) { - void *(*alloc_func) (struct pool *, size_t); + void *(*alloc_func) (struct pool *, size_t n); + void *(*nalloc_func) (struct pool *, size_t n, size_t s); struct tab_table *t; @@ -62,28 +66,29 @@ tab_create (int nc, int nr, int reallocable) t->nc = t->cf = nc; t->l = t->r = t->t = t->b = 0; + nalloc_func = reallocable ? pool_nmalloc : pool_nalloc; alloc_func = reallocable ? pool_malloc : pool_alloc; #if GLOBAL_DEBUGGING t->reallocable = reallocable; #endif - t->cc = alloc_func (t->container, nr * nc * sizeof *t->cc); + t->cc = nalloc_func (t->container, nr * nc, sizeof *t->cc); t->ct = alloc_func (t->container, nr * nc); memset (t->ct, TAB_EMPTY, nc * nr); - t->rh = alloc_func (t->container, nc * (nr + 1)); + t->rh = nalloc_func (t->container, nc, nr + 1); memset (t->rh, 0, nc * (nr + 1)); - t->hrh = alloc_func (t->container, sizeof *t->hrh * (nr + 1)); + t->hrh = nalloc_func (t->container, nr + 1, sizeof *t->hrh); memset (t->hrh, 0, sizeof *t->hrh * (nr + 1)); t->trh = alloc_func (t->container, nr + 1); memset (t->trh, 0, nr + 1); - t->rv = alloc_func (t->container, (nc + 1) * nr); + t->rv = nalloc_func (t->container, nr, nc + 1); memset (t->rv, 0, (nc + 1) * nr); - t->wrv = alloc_func (t->container, sizeof *t->wrv * (nc + 1)); + t->wrv = nalloc_func (t->container, nc + 1, sizeof *t->wrv); memset (t->wrv, 0, sizeof *t->wrv * (nc + 1)); t->trv = alloc_func (t->container, nc + 1); @@ -160,7 +165,7 @@ tab_realloc (struct tab_table *t, int nc, int nr) unsigned char *new_ct; int r; - new_cc = pool_malloc (t->container, nr * nc * sizeof *new_cc); + new_cc = pool_nmalloc (t->container, nr * nc, sizeof *new_cc); new_ct = pool_malloc (t->container, nr * nc); for (r = 0; r < mr1; r++) { @@ -176,14 +181,13 @@ tab_realloc (struct tab_table *t, int nc, int nr) } else if (nr != t->nr) { - t->cc = pool_realloc (t->container, t->cc, nr * nc * sizeof *t->cc); + t->cc = pool_nrealloc (t->container, t->cc, nr * nc, sizeof *t->cc); t->ct = pool_realloc (t->container, t->ct, nr * nc); - t->rh = pool_realloc (t->container, t->rh, nc * (nr + 1)); - t->rv = pool_realloc (t->container, t->rv, (nc + 1) * nr); + t->rh = pool_nrealloc (t->container, t->rh, nc, nr + 1); + t->rv = pool_nrealloc (t->container, t->rv, nr, nc + 1); t->trh = pool_realloc (t->container, t->trh, nr + 1); - t->hrh = pool_realloc (t->container, t->hrh, - sizeof *t->hrh * (nr + 1)); + t->hrh = pool_nrealloc (t->container, t->hrh, nr + 1, sizeof *t->hrh); if (nr > t->nr) { @@ -935,8 +939,8 @@ tabi_table (struct som_entity *table) tab_offset (t, 0, 0); assert (t->w == NULL && t->h == NULL); - t->w = pool_alloc (t->container, sizeof *t->w * t->nc); - t->h = pool_alloc (t->container, sizeof *t->h * t->nr); + t->w = pool_nalloc (t->container, t->nc, sizeof *t->w); + t->h = pool_nalloc (t->container, t->nr, sizeof *t->h); } /* Set the current output device to DRIVER. */