]> granicus.if.org Git - postgis/commitdiff
Fix memory errors in presence of NULL (0-verticed) geometries and insert (default...
authorSandro Santilli <strk@keybit.net>
Fri, 12 Mar 2010 18:39:17 +0000 (18:39 +0000)
committerSandro Santilli <strk@keybit.net>
Fri, 12 Mar 2010 18:39:17 +0000 (18:39 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@5430 b70326c6-7e19-0410-871a-916f4a2858ee

loader/shp2pgsql-core.c

index 81e9719d2f506becbff722b979a0840c02f906c0..aacfbe2bf51634441de576188feec016d15390d4 100644 (file)
@@ -1463,7 +1463,7 @@ ShpLoaderGenerateSQLRowStatement(SHPLOADERSTATE *state, int item, char **strreco
        stringbuffer_t *sbwarn;
        char val[MAXVALUELEN];
        char *escval;
-       char *geometry, *ret;
+       char *geometry=NULL, *ret;
        char *utf8str;
        int res, i;
 
@@ -1689,50 +1689,51 @@ ShpLoaderGenerateSQLRowStatement(SHPLOADERSTATE *state, int item, char **strreco
 
                                return SHPLOADERERR;
                        }
-               }
 
 
-               /* Now generate the geometry string according to the current configuration */
-               if (state->config->hwgeom)
-               {
-                       /* Old-style hwgeom (WKT) */
-                       if (!state->config->dump_format)
-                               vasbappend(sb, "GeomFromText('");
-                       else
+                       /* Now generate the geometry string according to the current configuration */
+                       if (state->config->hwgeom)
                        {
-                               /* Output SRID if relevant */
-                               if (state->config->sr_id != 0)
-                                       vasbappend(sb, "SRID=%d;", state->config->sr_id);
-                       }
+                               /* Old-style hwgeom (WKT) */
+                               if (!state->config->dump_format)
+                                       vasbappend(sb, "GeomFromText('");
+                               else
+                               {
+                                       /* Output SRID if relevant */
+                                       if (state->config->sr_id != 0)
+                                               vasbappend(sb, "SRID=%d;", state->config->sr_id);
+                               }
 
-                       vasbappend(sb, "%s", geometry);
+                               vasbappend(sb, "%s", geometry);
 
-                       if (!state->config->dump_format)
-                       {
-                               vasbappend(sb, "'");
+                               if (!state->config->dump_format)
+                               {
+                                       vasbappend(sb, "'");
 
-                               /* Output SRID if relevant */
-                               if (state->config->sr_id != 0)
-                                       vasbappend(sb, ", %d)", state->config->sr_id);
-                               else
-                                       vasbappend(sb, ")");
+                                       /* Output SRID if relevant */
+                                       if (state->config->sr_id != 0)
+                                               vasbappend(sb, ", %d)", state->config->sr_id);
+                                       else
+                                               vasbappend(sb, ")");
+                               }
                        }
-               }
-               else
-               {
-                       /* New style lwgeom (HEXEWKB) */
-                       if (!state->config->dump_format)
-                               vasbappend(sb, "'");
+                       else
+                       {
+                               /* New style lwgeom (HEXEWKB) */
+                               if (!state->config->dump_format)
+                                       vasbappend(sb, "'");
 
-                       vasbappend(sb, "%s", geometry);
+                               vasbappend(sb, "%s", geometry);
+
+                               if (!state->config->dump_format)
+                                       vasbappend(sb, "'");
+                       }
 
-                       if (!state->config->dump_format)
-                               vasbappend(sb, "'");
+                       free(geometry);
                }
 
                /* Tidy up everything */
                SHPDestroyObject(obj);
-               free(geometry);
        }
 
        /* Close the line correctly for dump/insert format */