From 0ea70b0e01a8e93c2d1780b080d3f7241d1a307c Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Thu, 13 May 2010 08:39:49 +0000 Subject: [PATCH] Fix memory error in ST_Split (short allocation) git-svn-id: http://svn.osgeo.org/postgis/trunk@5618 b70326c6-7e19-0410-871a-916f4a2858ee --- postgis/lwgeom_geos_split.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/postgis/lwgeom_geos_split.c b/postgis/lwgeom_geos_split.c index 9365585ae..99bcf33dd 100644 --- a/postgis/lwgeom_geos_split.c +++ b/postgis/lwgeom_geos_split.c @@ -382,7 +382,7 @@ lwcollection_split(LWCOLLECTION* lwcoll_in, LWGEOM* blade_in) size_t i,j; split_vector_capacity=8; - split_vector = lwalloc(split_vector_capacity); + split_vector = lwalloc(split_vector_capacity * sizeof(LWGEOM*)); if ( ! split_vector ) { lwerror("Out of virtual memory"); return NULL; @@ -402,8 +402,10 @@ lwcollection_split(LWCOLLECTION* lwcoll_in, LWGEOM* blade_in) /* Reallocate split_vector if needed */ if ( split_vector_size + col->ngeoms > split_vector_capacity ) { - split_vector_capacity *= 2; - split_vector = lwrealloc(split_vector, split_vector_capacity); + /* NOTE: we could be smarter on reallocations here */ + split_vector_capacity += col->ngeoms; + split_vector = lwrealloc(split_vector, + split_vector_capacity * sizeof(LWGEOM*)); if ( ! split_vector ) { lwerror("Out of virtual memory"); return NULL; -- 2.40.0