]> granicus.if.org Git - postgis/commitdiff
Another attempt to fix #1080 on Windows - it seems that simply opening and
authorMark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>
Fri, 1 Jul 2011 22:36:48 +0000 (22:36 +0000)
committerMark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>
Fri, 1 Jul 2011 22:36:48 +0000 (22:36 +0000)
closing a pgsql2shp state object is a good way to find all uninitialised
variables.

git-svn-id: http://svn.osgeo.org/postgis/trunk@7547 b70326c6-7e19-0410-871a-916f4a2858ee

loader/pgsql2shp-core.c

index b9854846015549e26a9fef18cbdc8a429de38583..985a1f31060c41a7962ac24a4e7e99af8cc13b48 100644 (file)
@@ -1259,6 +1259,11 @@ ShpDumperCreate(SHPDUMPERCONFIG *config)
        state->schema = NULL;
        state->table = NULL;
        state->geo_col_name = NULL;
+       state->fetch_query = NULL;
+       state->main_scan_query = NULL;
+       state->dbffieldnames = NULL;
+       state->dbffieldtypes = NULL;
+       state->pgfieldnames = NULL;
        state->column_map_pgfieldnames = NULL;
        state->column_map_dbffieldnames = NULL;
        state->column_map_size = 0;
@@ -2242,15 +2247,24 @@ ShpDumperDestroy(SHPDUMPERSTATE *state)
                        PQfinish(state->conn);
 
                /* Free the query strings */
-               free(state->fetch_query);
-               free(state->main_scan_query);
+               if (state->fetch_query)
+                       free(state->fetch_query);
+               if (state->main_scan_query)
+                       free(state->main_scan_query);
 
                /* Free the DBF information fields */
-               for (i = 0; i < state->fieldcount; i++)
-                       free(state->dbffieldnames[i]);
-               free(state->dbffieldnames);
-               free(state->dbffieldtypes);
-               free(state->pgfieldnames);
+               if (state->dbffieldnames)
+               {
+                       for (i = 0; i < state->fieldcount; i++)
+                               free(state->dbffieldnames[i]);
+                       free(state->dbffieldnames);
+               }
+               
+               if (state->dbffieldtypes)
+                       free(state->dbffieldtypes);
+               
+               if (state->pgfieldnames)
+                       free(state->pgfieldnames);
 
                /* Free any column map fieldnames if specified */
                if (state->column_map_size > 0)