]> granicus.if.org Git - postgis/commitdiff
Simplify hooks on GEOS error reporter function from isvalid* functions
authorSandro Santilli <strk@keybit.net>
Sat, 6 Feb 2010 13:57:52 +0000 (13:57 +0000)
committerSandro Santilli <strk@keybit.net>
Sat, 6 Feb 2010 13:57:52 +0000 (13:57 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@5213 b70326c6-7e19-0410-871a-916f4a2858ee

postgis/lwgeom_geos.c

index d45de29a6f63318a771f654b5b07f46a110e6309..4f6d50acaf08b2f6df1d1c06bf0e0783e3394f70 100644 (file)
@@ -86,13 +86,19 @@ int point_in_multipolygon(LWMPOLY *mpolygon, LWPOINT *pont);
 static char loggederror[BUFSIZE];
 
 static void
-errorlogger(const char *fmt, va_list ap)
+errorlogger(const char *fmt, ...)
 {
+       va_list ap;
+
+       va_start(ap, fmt);
+
        /* Call the supplied function */
        if ( BUFSIZE-1 < vsnprintf(loggederror, BUFSIZE-1, fmt, ap) )
        {
                loggederror[BUFSIZE-1] = '\0';
        }
+
+       va_end(ap);
 }
 
 
@@ -1435,17 +1441,12 @@ Datum isvalidreason(PG_FUNCTION_ARGS)
        int len = 0;
        char *result = NULL;
        const GEOSGeometry *g1 = NULL;
-       lwreporter lwerror_var_bak;
 
        geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
 
-       initGEOS(lwnotice, lwerror);
+       initGEOS(lwnotice, errorlogger);
 
-       lwerror_var_bak = lwerror_var;
-       lwerror_var = errorlogger;
        g1 = (GEOSGeometry *)POSTGIS2GEOS(geom);
-       lwerror_var = lwerror_var_bak;
-
        if ( g1 )
        {
                reason_str = GEOSisValidReason(g1);
@@ -1501,7 +1502,6 @@ Datum isvaliddetail(PG_FUNCTION_ARGS)
        TupleDesc tupdesc;
        HeapTuple tuple;
        AttInMetadata *attinmeta;
-       lwreporter lwerror_var_bak;
 
        /*
         * Build a tuple description for a
@@ -1522,12 +1522,9 @@ Datum isvaliddetail(PG_FUNCTION_ARGS)
 
        geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
 
-       initGEOS(lwnotice, lwerror);
+       initGEOS(lwnotice, errorlogger);
 
-       lwerror_var_bak = lwerror_var;
-       lwerror_var = errorlogger;
        g1 = (GEOSGeometry *)POSTGIS2GEOS(geom);
-       lwerror_var = lwerror_var_bak;
 
        if ( g1 )
        {