Hello,
I'm having a problem with the d.thematic.area module I just committed in a modified version.
When I use the discontinuities algorithm for calculating the class breaks, I get segmentation faults, depending on the number of classes I ask for and on the variable I try to class.
For example, using a local copy of the censusblk_swwake in an sqlite mapset, I run:
for var in HH_SIZE MEDIAN_AGE TOTAL_POP; do for i in 5 6 7 8 9 10; do echo "$var, $i: "; d.thematic.area ilots colu=$var algo=dis nbcla=$i color=254:240:217,253:204:138,252:141:89,227:74:51,179:0:0,254:240:217,253:204:138,252:141:89,227:74:51,179:0:0; done; done
which gives me:
HH_SIZE, 5:
HH_SIZE, 6:
Segmentation fault
HH_SIZE, 7:
HH_SIZE, 8:
HH_SIZE, 9:
Segmentation fault
HH_SIZE, 10:
Segmentation fault
MEDIAN_AGE, 5:
MEDIAN_AGE, 6:
Segmentation fault
MEDIAN_AGE, 7:
MEDIAN_AGE, 8:
MEDIAN_AGE, 9:
Segmentation fault
MEDIAN_AGE, 10:
TOTAL_POP, 5:
TOTAL_POP, 6:
Segmentation fault
TOTAL_POP, 7:
TOTAL_POP, 8:
TOTAL_POP, 9:
Segmentation fault
TOTAL_POP, 10:
Segmentation fault
It seems to be linked to the class_discont function in lib/arraystats/class.c, as this only happens with this algorithm. However, when I do the same test with d.thematic.areas -nl flags (i.e. don't plot the map, but only output legend info), I don't get the segfaults, so there is some problem between this function and the display functions.
I seem to have tracked it down to the call to Vect_new_line_struct() on line 32 in display/d.thematic.area/area.c and from there to (I think) Vect__new_line_struct in lib/vector/Vlib/line.c.
I imagine it is just some stupid C-novice error, probably memory allocation somewhere, so I would really appreciate if someone with the relevant knowledge could just glance over the code to see if there is something obvious...
Moritz