[geos-devel] GeometryCollection interfaces

Norman Vine nhv at cape.com
Sun Oct 19 07:29:56 EDT 2003


strk writes:
> 
> When constructing geometry collections (Multi*, GeometryCollection)
> we will pass the constructors a vector to "component" geometries.
> The vector will be untouched while the pointed-to geometries will
> be taken on by created object. This means that you can NOT
> delete base geometries passed to geometry collection constructor.
> This also mean that you can not do something like:
> 
> PSEUDOCODE:
> 	1: point = createPoint;
> 	2: line = createLine;
> 	3: polygon = createPolygon;
> 	4: collection1 = createCollection(point, line);
> 	5: collection2 = createCollection(point, polygon);
> 	6: destroy collection1;
> 	7: destroy collection2;
> 
> This is because line 6 will destroy all collection1 components that
> is point and line. Line 7 will try to destroy components of collection2
> which are point and polygon. Well: point will have been already destroyed,
> segfault!
> 
> Needless to say you won't be able to use point, line, polygon any further
> because you are left (after line 6) with pointer to "private" space!
> You have loaded weapons in your hands!

IMO we should be using something like
http://www.boost.org/libs/smart_ptr/smart_ptr.htm
so these sorts of things are a non-issue

Cheers

Norman




More information about the geos-devel mailing list