>>>>> Glynn Clements <[EMAIL PROTECTED]> writes:

 >>>> Is there some fundamental reason why r.univar has separate cases
 >>>> for CELL/FCELL/DCELL types, rather than just working in DCELL
 >>>> throughout?

 >>> I can't remember with any certainty why I did it that way; it's
 >>> been like that since the first CVS checkin.

 >> Please consider the following patch.

 >> RASTER_MAP_TYPE map_type;
 >> +    void *all_values
 >> +   = ((! param.extended->answer) ? 0
 >> +      : (map_type == DCELL_TYPE) ? stats->dcell_array
 >> +      : (map_type == FCELL_TYPE) ? stats->fcell_array
 >> +      : stats->cell_array);

 > map_type hasn't been initialised yet. There's no reason why it can't
 > be initialised in the declaration, i.e.:

 > RASTER_MAP_TYPE map_type = G_get_raster_map_type (fd);

[...]

 > We have G_raster_size() for this:

[...]

 > all_values is a void*, and arithmetic on a void* isn't permitted by
 > ANSI C (gcc allows it as an extension).

 > We have G_incr_void_ptr() for this, e.g..:

 > memcpy(G_incr_void_ptr(all_values, stats->n * value_sz), ptr,
 > value_sz);

 > Or you can just make it a char* instead.

        Yes, thanks.

        I hope to test the corrected patch within a few days.

_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to