On Wed, Jul 2, 2008 at 6:43 PM, Glynn Clements <[EMAIL PROTECTED]> wrote: > Markus Neteler wrote: ... >> (Un)related a segfault: When copying the map from the postgresql mapset >> into the sqlite mapset, it crashes: >> >> # in SQLite mapset: ... >> (gdb) r [EMAIL PROTECTED],test --o ... >> Program received signal SIGSEGV, Segmentation fault. ... >> (gdb) bt full >> #0 0x00002ab6aa9e8888 in db_execute_immediate >> (driver=0xab8be18d88e1a38c, SQLstatement=0x7fff00de1240) >> at c_execute.c:16 >> ret_code = 32767 >> #1 0x00002ab6aa9ea276 in db__copy_table (from_drvname=0x610420 "pg", > > [snip] > >> nvals=-1846924119) at copy_tab.c:321 > > At the top of db__copy_table (lib/db/dbmi_client/copy_tab.c) is: > > char buf[1000]; > > I suspect that this is overflowing at line 295: > > 294 db_double_quote_string ( &value_string ); > 295 sprintf (buf, "'%s'", db_get_string(&value_string) ); > 296 db_append_string ( &sql, buf); > > I suggest: > > db_double_quote_string ( &value_string ); > db_append_string ( &sql, "'"); > db_append_string ( &sql, db_get_string(&value_string)); > db_append_string ( &sql, "'"); >
Perfect, this cures the problem. Thanks a lot! Markus _______________________________________________ grass-dev mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/grass-dev
