gnumeric r16429 - in branches/gnumeric-1-8: . src
- From: mortenw svn gnome org
- To: svn-commits-list gnome org
- Subject: gnumeric r16429 - in branches/gnumeric-1-8: . src
- Date: Sat, 1 Mar 2008 17:40:37 +0000 (GMT)
Author: mortenw
Date: Sat Mar 1 17:40:37 2008
New Revision: 16429
URL: http://svn.gnome.org/viewvc/gnumeric?rev=16429&view=rev
Log:
2008-03-01 Morten Welinder <terra gnome org>
* src/xml-sax-read.c (xml_sax_cell_content): Ref shared
expressions before inserting them into the hash.
(gnm_xml_file_open): Register a value-free function for the shared
expression hash. Fixes #519761.
Modified:
branches/gnumeric-1-8/ChangeLog
branches/gnumeric-1-8/NEWS
branches/gnumeric-1-8/src/xml-sax-read.c
Modified: branches/gnumeric-1-8/NEWS
==============================================================================
--- branches/gnumeric-1-8/NEWS (original)
+++ branches/gnumeric-1-8/NEWS Sat Mar 1 17:40:37 2008
@@ -30,6 +30,7 @@
* Fix memory allocation failure for huge .gnumeric files. [#519319]
* Fix mstyle problem. [#519451]
* Fix auto-fill problem. [#519680]
+ * Fix corrupted-gnumeric-bug. [#519761]
--------------------------------------------------------------------------
Gnumeric 1.8.1
Modified: branches/gnumeric-1-8/src/xml-sax-read.c
==============================================================================
--- branches/gnumeric-1-8/src/xml-sax-read.c (original)
+++ branches/gnumeric-1-8/src/xml-sax-read.c Sat Mar 1 17:40:37 2008
@@ -1616,7 +1616,7 @@
GNM_STYLE_BORDER_TOP + (int)(type - MSTYLE_BORDER_TOP);
GnmBorder *border =
gnm_style_border_fetch ((GnmStyleBorderType)pattern, colour,
- gnm_style_border_get_orientation (loc));
+ gnm_style_border_get_orientation (loc));
gnm_style_set_border (state->style, type, border);
}
}
@@ -1830,10 +1830,14 @@
GnmExprTop const *texpr =
g_hash_table_lookup (state->expr_map, id);
if (texpr == NULL) {
- if (gnm_cell_has_expr (cell))
- g_hash_table_insert (state->expr_map, id,
- (gpointer)cell->base.texpr);
- else
+ if (gnm_cell_has_expr (cell)) {
+ GnmExprTop const *texpr =
+ cell->base.texpr;
+ gnm_expr_top_ref (texpr);
+ g_hash_table_insert (state->expr_map,
+ id,
+ (gpointer)texpr);
+ } else
g_warning ("XML-IO : Shared expression with no expression ??");
} else if (!is_post_52_array)
g_warning ("XML-IO : Duplicate shared expression");
@@ -2591,7 +2595,9 @@
state.validation.texpr[0] = state.validation.texpr[1] = NULL;
state.cond.texpr[0] = state.cond.texpr[1] = NULL;
state.cond_save_style = NULL;
- state.expr_map = g_hash_table_new (g_direct_hash, g_direct_equal);
+ state.expr_map = g_hash_table_new_full
+ (g_direct_hash, g_direct_equal,
+ NULL, (GFreeFunc)gnm_expr_top_unref);
state.delayed_names = NULL;
state.so = NULL;
state.page_breaks = NULL;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]