From e77f10eb2afbfb24c9d5bc44ee5d473613ad40b6 Mon Sep 17 00:00:00 2001 From: raffitz Date: Sat, 23 Mar 2019 18:02:47 +0000 Subject: [PATCH] Fix too little memory allocation bug --- expression.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/expression.c b/expression.c index 496516c..d93d0d5 100644 --- a/expression.c +++ b/expression.c @@ -71,15 +71,13 @@ struct expression_result resolve(union expression* root){ sprintf(result.text, "%lld",(*root).constant.value); break; case WEBDICE_ROLL: - size = (*root).roll.count * ceill(15+log10l((*root).roll.count * (*root).roll.type)); + size = ((*root).roll.count + 1) * ceill(30+log10l((*root).roll.count * (*root).roll.type)); length += (int64_t) size; result.min = (*root).roll.count; result.max = (*root).roll.count * (*root).roll.type; result.expected = (*root).roll.count * ((*root).roll.type + 1.0) / 2.0; result.text = (char*) malloc(length * sizeof(char)); - fprintf(stderr,"COUNT: %lld\n\n",(*root).roll.count); values = (int64_t*) malloc((*root).roll.count * sizeof(int64_t)); - fprintf(stderr,"ALLOC'D %X\n\n",values); for (i = 0, j = (*root).roll.count, total = 0; i < (*root).roll.count; i++, j--){ values[i] = 1 + (rand() % (*root).roll.type); total += values[i]; @@ -93,12 +91,7 @@ struct expression_result resolve(union expression* root){ sprintf(&(result.text[strlen(result.text)]),"%lld,", values[i]); } } - fprintf(stderr,"FREE'D %X\n\n",values); - fprintf(stderr,"FREE'D %X\n\n",values); - fprintf(stderr,"FREE'D %X\n\n",values); - fflush(stderr); free(values); - fprintf(stderr,"FREE'D %X\n\n",values); result.actual = total; break; case WEBDICE_BINARY: