[GRASS-dev] Re: [GRASS GIS] #699: v.buffer segfault: in Vect_get_isle_points()

GRASS GIS trac at osgeo.org
Sun Jul 26 05:04:05 EDT 2009


#699: v.buffer segfault:  in Vect_get_isle_points()
----------------------+-----------------------------------------------------
  Reporter:  neteler  |       Owner:  grass-dev at lists.osgeo.org
      Type:  defect   |      Status:  new                      
  Priority:  normal   |   Milestone:  6.4.0                    
 Component:  Vector   |     Version:  6.4.0 RCs                
Resolution:           |    Keywords:                           
  Platform:  All      |         Cpu:  All                      
----------------------+-----------------------------------------------------
Comment (by mmetz):

 v.buffer is broken for areas. After I fixed the segfault (not submitted),
 it hangs with the above example. Further on, with some simple test
 vectors, it throws away isles of areas, removes boundaries between
 adjacent areas with different categories, and buffers both boundaries and
 areas causing damaged topology.

 IMO,

 - boundaries shared between two areas should not be touched when buffering
 areas, because it can not be decided where the buffered boundary should be

 - isles should only be modified if they consist of areas without centroid,
 otherwise the should be preserved as is

 - v.buffer should buffer either boundaries or areas, not both at the same
 time

 There is redundant code in Vlib/buffer2.c, functions that are present
 elsewhere in the vector libs. New Vect_*() functions should make use of
 existing functions instead of writing duplicates of existing functions.
 Someone has to maintain all the code...

 This is bad news, I have no time right now to attempt to fix it, best
 would be if Rosen Matev fixes it, he knows the code best.

 Markus M

-- 
Ticket URL: <https://trac.osgeo.org/grass/ticket/699#comment:3>
GRASS GIS <http://grass.osgeo.org>


More information about the grass-dev mailing list