this bug's URL: http://intevation.de/rt/webrt?serial_num=4352
-------------------------------------------------------------------------
Subject: v.to.db: segfault on layer > 1
v.db.addtable map_name layer=2 # or > 2
causes a segault in v.to.db:
+ v.db.connect map=tmp_a
database=/home/hamish/grassdata/spearfish60/user1/dbf/ driver=dbf layer=3
table=tmp_a_3 key=cat
WARNING: The table <tmp_a_3> is now part of vector map <tmp_a> and may be
deleted or overwritten by GRASS modules.
WARNING: Select privileges were granted on the table.
+ v.to.db tmp_a layer=3 option=cat col=cat
ERROR: G_calloc: out of memory
to recreate input map see: (swath_area vector)
http://grass.itc.it/pipermail/grassuser/2006-April/033921.html
[boundaries of that vector have a cat of -1
(it has centroid+area of cat 1 as well)
nope, using 'v.category op=del type=boundary' doesn't help]
running in kdbg...
If fails on this line (55):
Values = (VALUE *) G_calloc ( n + 1, sizeof ( VALUE ) );
because n is being used uninitialized. (n=1071328722)
n = Vect_cidx_get_num_unique_cats_by_index ( &Map,
Vect_cidx_get_field_index(&Map, options.field ) );
as Vect_cidx_get_field_index() fails to find the layer and returns -1
instead of a valid layer number.
and Vect_cidx_get_num_unique_cats_by_index() checks that the layer index
isn't >= the number of layers, but not that it could be set to -1.
so Vect_cidx_get_num_unique_cats_by_index() could use another error test,
but that still won't fix why it can't find the layer.
Hamish
-------------------------------------------- Managed by Request Tracker