Ver código fonte

Eliminate fixed-size buffer

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@52725 15284696-431f-4ddb-bdfa-cd5b030d7da7
Glynn Clements 12 anos atrás
pai
commit
f86d8499fa
1 arquivos alterados com 6 adições e 1 exclusões
  1. 6 1
      raster/r.mapcalc/expression.c

+ 6 - 1
raster/r.mapcalc/expression.c

@@ -370,7 +370,8 @@ static char *format_map(const expression * e)
 
 
 static char *format_function(const expression * e, int prec)
 static char *format_function(const expression * e, int prec)
 {
 {
-    char *args[1024];
+    char **args = NULL;
+    int num_args = 0;
     char *result;
     char *result;
     int len;
     int len;
     int i;
     int i;
@@ -381,6 +382,10 @@ static char *format_function(const expression * e, int prec)
     len = strlen(e->data.func.name) + 3;
     len = strlen(e->data.func.name) + 3;
 
 
     for (i = 1; i <= e->data.func.argc; i++) {
     for (i = 1; i <= e->data.func.argc; i++) {
+	if (i >= num_args) {
+	    num_args = i + 1000;
+	    args = G_realloc(args, num_args * sizeof(char *));
+	}
 	args[i] = format_expression_prec(e->data.func.args[i], 9);
 	args[i] = format_expression_prec(e->data.func.args[i], 9);
 	if (i > 1)
 	if (i > 1)
 	    len += 2;
 	    len += 2;