diff --git a/general/g.gisenv/main.c b/general/g.gisenv/main.c index 73dd9be6719..e30b2772983 100644 --- a/general/g.gisenv/main.c +++ b/general/g.gisenv/main.c @@ -198,6 +198,7 @@ char *parse_variable(const char *v_name, char **value) { char *u_name; /* uppercase variable name */ char *name, *ptr; + name = NULL; name = G_store(v_name); if (value) @@ -207,12 +208,14 @@ char *parse_variable(const char *v_name, char **value) if (ptr != NULL) { *ptr = '\0'; if (value) - *value = ptr + 1; + *value = G_store(ptr + 1); } /* Allow unset without '=' sign */ if (value) { - if (*value != NULL && **value == '\0') + if (*value != NULL && **value == '\0') { + G_free(*value); *value = NULL; + } } if (strlen(name) < 1) G_fatal_error(_("GRASS variable not defined")); @@ -224,6 +227,7 @@ char *parse_variable(const char *v_name, char **value) G_verbose_message(_("GRASS variable must be uppercase. Using '%s'."), u_name); } + G_free(name); return u_name; }