Request Tracker wrote:
this bug's URL: http://intevation.de/rt/webrt?serial_num=5197
---------------------------------------------------------------------
..
Subject: v.distance: segfault when 'from' vector doesn't exist
..
$ v.distance from=dummy1 to=dummy2 upload=cat col=nic
Segmentation fault
fixed in CVS HEAD & 6.2.
it was checking the vector map, but then didn't check to see what the
result of that test was. The test returns the mapset name on success.
Interestingly, with '-p' it will behave as supposed to:
$ v.distance -p from=dummy1 to=dummy2 upload=cat col=nic
ERROR: Cannot find vector dummy1@
that's because it broke on this strcmp() when "mapset" was NULL:
if ( !print_flag->answer && strcmp(mapset,G_mapset()) != 0 )
G_fatal_error(_("Vector 'from' is not in user mapset and cannot be updated"));
BTW: why 'dummy1@' instead of 'dummy1@mapset_name'?
map wasn't found so mapset was NULL, and NULL at the end of a string
is just the end of the string.
I noticed the many (all?) modules have been recently doing that.
if you can still find them, please provide specifics.
my question, and maybe the bigger bug, is why G_parser() didn't catch
this?
/*vector maps*/
case G_OPT_V_INPUT:
Opt->key = "input";
Opt->type = TYPE_STRING;
Opt->key_desc = "name";
Opt->required = YES;
Opt->gisprompt = "old,vector,vector";
Opt->description = _("Name of input vector map");
break;
I thought the "old" in gisprompt meant that it was tested. Or is that
just true for "new"?
Hamish