gnumeric r16620 - in trunk: . plugins/excel



Author: mortenw
Date: Thu Jun 12 20:17:07 2008
New Revision: 16620
URL: http://svn.gnome.org/viewvc/gnumeric?rev=16620&view=rev

Log:
2008-06-11  Morten Welinder  <terra gnome org>

	* ms-excel-util.c (two_way_table_put): If we free the key because
	it is a duplicate, continue with the valid version, not the freed.
	Fixes #537625.



Modified:
   trunk/NEWS
   trunk/plugins/excel/ChangeLog
   trunk/plugins/excel/ms-excel-util.c

Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS	(original)
+++ trunk/NEWS	Thu Jun 12 20:17:07 2008
@@ -24,6 +24,7 @@
 	* Fix COUNTBLANK crash.  [#534204]
 	* Fix TREND crash.  [#534587]
 	* Fix text export problem for times with fractional seconds.  [#534514]
+	* Fix xls export problem.  [#537625]
 
 SeÃn de BÃrca:
 	* Move to tango based icons. [#450444]

Modified: trunk/plugins/excel/ms-excel-util.c
==============================================================================
--- trunk/plugins/excel/ms-excel-util.c	(original)
+++ trunk/plugins/excel/ms-excel-util.c	Thu Jun 12 20:17:07 2008
@@ -115,9 +115,14 @@
 	gpointer unique;
 
 	if (addit) {
+		gint old_index = index;
 		index = table->idx_to_key->len + table->base;
 
-		if (!found) {
+		if (found) {
+			if (table->key_destroy_func)
+				(table->key_destroy_func) (key);
+			key = two_way_table_idx_to_key (table, old_index);
+		} else {
 			/* We have not seen this pointer before, but is the key
 			 * already in the set ?
 			 */
@@ -127,8 +132,7 @@
 						     GINT_TO_POINTER (index + 1));
 			g_hash_table_insert (table->unique_keys, key,
 					     GINT_TO_POINTER (index + 1));
-		} else if (table->key_destroy_func)
-			(table->key_destroy_func) (key);
+		}
 		g_ptr_array_add (table->idx_to_key, key);
 	}
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]