[GRASS5] Re: [bug #1052] (grass) [rsv].proj are crashing

Roger Miller rgrmill at rt66.com
Thu May 23 07:36:04 EDT 2002


On Thursday 23 May 2002 02:26, Markus Neteler wrote:

> Following fix cures the problem for env.c:
> cvs diff -u env.c
> RCS file: /grassrepository/grass/src/libes/gis/env.c,v
> retrieving revision 1.5
> diff -u -r1.5 env.c
> --- env.c       12 May 2002 12:04:45 -0000      1.5
> +++ env.c       23 May 2002 08:25:33 -0000
> @@ -177,13 +177,12 @@
>      int n;
>
>      for (n = 0; n < count; n++)
> -       if (env[n].name && (strcmp(env[n].name, name)==0))
> +       if (env[n].name && (strlen(name)!=0) && (strcmp(env[n].name,
> name)==0)) {
>             free (env[n].name);
>             env[n].name = 0;
>             return 1;
>         }
> -
>      return 0;
>  }
>
> Objections to submit this fix?

Markus, if an empty string caused the problem, then maybe a better fix would 
be to change set_env so that an empty string never stored.  An empty string 
could be treated like a NULL.  

At line 125 in env.c the statement

if(!value)

could be changed to 

if(!value || !strlen(value))

That way an empty string is treated the same way as sending a NULL string and 
causes GRASS to unset the environment variable.

> But...
> Then the next bug occurs due to the new NAD datum support:
> In r.proj/main.c line 279 is the function G_database_datum_name() used:
>    strncpy(in_datum,G_database_datum_name(),sizeof(in_datum));
> For my existing locations it returns NULL which causes a crash
> of strncpy(). The function G_database_datum_name() is in
> src/libes/gis/proj3.c
>
> How to solve that one (hi Roger)? Therefore [vs].proj are also affected.

Uhh.  I guess I did know about that problem.  A check is easily added.  My 
preference would be also to change G_database_datum_name() so that it does 
not return NULL (maybe returning a pointer to "unknown" instead) and/or 
ensuring that the datum is never blank.


Roger Miller



More information about the grass-dev mailing list