fix buffer size calculation - ploot - simple plotting tools HTML git clone git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ploot DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit c9c242228362e465b83fc106675981fd45419228 DIR parent b22b1b174646f828a28144c010961a9c57f54dbd HTML Author: Josuah Demangeon <mail@josuah.net> Date: Wed, 2 May 2018 05:09:18 +0200 fix buffer size calculation Diffstat: M main.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) --- DIR diff --git a/main.c b/main.c @@ -78,14 +78,15 @@ eatol(char *str) } void -add_value(double **v, int *bufsiz, int nval, char *field) +add_value(Vlist *v, int *bufsiz, int nval, char *field) { if (nval >= *bufsiz) { - *bufsiz *= 2; - if ((*v = realloc(*v, *bufsiz)) == NULL) + *bufsiz = *bufsiz * 2 + 1; + if ((v->v = realloc(v->v, *bufsiz)) == NULL) perror("reallocating values buffer"), exit(1); } - (*v)[nval] = eatol(field); + v->v[nval] = eatol(field); + v->n = nval; } /* @@ -106,7 +107,7 @@ add_each_value(Vlist *v, int *bufsiz, int ncol, int nval, char *line) for (n = 0; (field = strsep(&line, ",")) != NULL; n++, v++) { if (n > ncol) fprintf(stderr, "%d: too many fields\n", nval), exit(0); - add_value(&v->v, bufsiz, nval, field); + add_value(v, bufsiz, nval, field); } if (n < ncol) fprintf(stderr, "%d: too few fields\n", nval), exit(0); @@ -121,15 +122,15 @@ add_each_value(Vlist *v, int *bufsiz, int ncol, int nval, char *line) void read_values(Vlist *v, int ncol) { - int n, nval, bufsiz; + int nval, bufsiz; char line[LINE_MAX]; + bufsiz = 0; for (nval = 0; fgets(line, sizeof(line), stdin); nval++) { estriplf(line); add_each_value(v, &bufsiz, ncol, nval, line); } - for (n = 0; n < ncol; n++, v++) - v->n = nval; + fprintf(stderr, "nval: %d, bufsiz: %d\n", nval, bufsiz), fflush(stderr); } static void