r22230 - gnucash/branches/2.4/src/backend/xml - [22229] Bug #678214 - GnuCash fails to open some post-processed XML files
Geert Janssens
gjanssens at code.gnucash.org
Fri Jun 22 10:38:21 EDT 2012
Author: gjanssens
Date: 2012-06-22 10:38:21 -0400 (Fri, 22 Jun 2012)
New Revision: 22230
Trac: http://svn.gnucash.org/trac/changeset/22230
Modified:
gnucash/branches/2.4/src/backend/xml/sixtp.c
Log:
[22229] Bug #678214 - GnuCash fails to open some post-processed XML files
Patch by Daniel Harding
Modified: gnucash/branches/2.4/src/backend/xml/sixtp.c
===================================================================
--- gnucash/branches/2.4/src/backend/xml/sixtp.c 2012-06-22 14:36:50 UTC (rev 22229)
+++ gnucash/branches/2.4/src/backend/xml/sixtp.c 2012-06-22 14:38:21 UTC (rev 22230)
@@ -894,6 +894,7 @@
gnc_is_our_first_xml_chunk(char *chunk, gboolean *with_encoding)
{
char *cursor = NULL;
+ size_t n;
if (with_encoding)
{
@@ -909,9 +910,6 @@
if (strncmp(cursor, "<?xml", 5) == 0)
{
- char *tag_compare1;
- char *tag_compare2;
-
if (!search_for('>', &cursor))
{
return GNC_BOOK_NOT_OURS;
@@ -922,12 +920,14 @@
return GNC_BOOK_NOT_OURS;
}
- tag_compare1 = g_strdup_printf("<%s\n", gnc_v2_xml_version_string);
- /* This second compare is to handle Windows end-of-line markers */
- tag_compare2 = g_strdup_printf("<%s\r\n", gnc_v2_xml_version_string);
+ if (*cursor != '<')
+ {
+ return GNC_BOOK_NOT_OURS;
+ }
- if ((strncmp(cursor, tag_compare1, strlen(tag_compare1)) == 0)
- || (strncmp(cursor, tag_compare2, strlen(tag_compare2)) == 0))
+ n = strlen(gnc_v2_xml_version_string);
+ if ((strncmp(cursor + 1, gnc_v2_xml_version_string, n) == 0)
+ && isspace(*(cursor + 1 + n)))
{
if (with_encoding)
{
@@ -942,14 +942,9 @@
}
}
}
- g_free (tag_compare1);
- g_free (tag_compare2);
return GNC_BOOK_XML2_FILE;
}
- g_free (tag_compare1);
- g_free (tag_compare2);
-
if (strncmp(cursor, "<gnc>", strlen("<gnc>")) == 0)
return GNC_BOOK_XML1_FILE;
More information about the gnucash-changes
mailing list