GNOME Bugzilla – Bug 690925
freeze or long loading on small ODF file
Last modified: 2012-12-31 20:14:37 UTC
This is https://bugs.launchpad.net/ubuntu/+source/gnumeric/+bug/1023254, containing a small <10KB ODF file that Gnumeric either does not load or only after a long time.
Note that during loading we observe: ** (/home/aguelzow/gnumeric/bin/gnumeric:14526): WARNING **: Strange size issue in internal_style_list
We seem to get stuck in:
+ Trace 231328
The problem are named ranges such as: <table:named-range table:name="CRSE_HIST$srt12$0" table:base-cell-address="$Sheet1.$B$2" table:cell-range-address="$Sheet1.$E$2"/> Gnumeric does not accept this table name. We try to fix it by repeatedly appending '_', but this does not create an acceptable name.
We are now loading that file. Internally we are building now the correct translation table for sheet names. We still have problems though: ** (gnumeric:24456): WARNING **: Strange size issue in internal_style_list (gnumeric:24456): GLib-CRITICAL **: g_hash_table_foreach: assertion `version == hash_table->version' failed Also as we execute: workbook_foreach_name (state->pos.wb, FALSE, (GHFunc)odf_fix_en_apply, fen->orig2fixed); we stop the translation with the above GLib-CRITICAL after applying the first fix. I would guess we are modifying the hash while we are transversing it.
Note that ODF 1.2 part 2, section 5.11 states: Expressions should limit the names of their identifiers to only ([UNICODE]) letters, underscores, and digits, not including patterns that look like cell references or the words True or False. Identifier ::= ( LetterXML (LetterXML | DigitXML | '_' | CombiningCharXML)* ) - ( [A-Za-z]+[0-9]+ ) - ([Tt][Rr][Uu][Ee]) - ([Ff][Aa][Ll][Ss][Ee]) A file that uses only names satisfying the 'should' requirement are opened by Gnumeric without any problem. The file in question is in fact invalid since the name CRSE_HIST$srt12$0 is not a valid identifier.
This problem has been fixed in the development version. The fix will be available in the next major software release. Thank you for your bug report.