This patch corrects Bug 116546.  There is still a problem in qofid.c
that was exposed by the fix--the PG backend doesn't fully support the
entity type lookups yet, or something.  Too late to diagnose now, must
sleep, but here's the patch for the bug fix.

The patch is agains head.  I'll submit the 1.8.x branch patch tomorrow
after I've tested it.

Thanks, 
-- 
Matthew Vanecek
perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
********************************************************************************
For 93 million miles, there is nothing between the sun and my shadow except me.
I'm always getting in the way of something...
? src/import-export/.scm-links
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1697
diff -u -r1.1697 ChangeLog
--- ChangeLog   22 Jul 2003 05:12:49 -0000      1.1697
+++ ChangeLog   23 Jul 2003 04:05:04 -0000
@@ -1,3 +1,11 @@
+2003-07-22  Matt Vanecek  <[EMAIL PROTECTED]>
+
+    * src/engine/qofbook.c: Set book->data_tables to NULL, and
+      gfree book->kvp_data, in qof_book_destroy().  This fixes
+      bug 116546.  GnuCash was crashing because the Postgres backend
+      was accessing book->data_tables, which had already been
+      freed but was not set to NULL.
+
 2003-07-22  Derek Atkins  <[EMAIL PROTECTED]>
 
        * src/import-export/qif/...
Index: src/engine/qofbook.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/qofbook.c,v
retrieving revision 1.10
diff -u -r1.10 qofbook.c
--- src/engine/qofbook.c        30 Jun 2003 05:59:13 -0000      1.10
+++ src/engine/qofbook.c        23 Jul 2003 04:05:12 -0000
@@ -105,7 +105,18 @@
 
   /* FIXME: Make sure the data_table is empty */
   g_hash_table_destroy (book->data_tables);
+  book->data_tables = NULL;
 
+  /* FIXME: There isn't a kvp_frame_destroy(). Make sure the
+   * kvp_data is empty.  book->kvp_data = kvp_frame_new() 
+   * (allocated by g_new0()) in qof_book_init(), so we should
+   * free it, too.
+   */
+  if (book->kvp_data) {
+      g_free(book->kvp_data);
+      book->kvp_data = NULL;
+  }
+  
   g_free (book);
   LEAVE ("book=%p", book);
 }

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
gnucash-devel mailing list
[EMAIL PROTECTED]
http://www.gnucash.org/cgi-bin/mailman/listinfo/gnucash-devel

Reply via email to