[gnumeric] xls: leaks and criticals.



commit d2ffeaf29b47a973877355bd25a93eb2ef6fc897
Author: Morten Welinder <terra gnome org>
Date:   Fri Oct 24 19:51:00 2014 -0400

    xls: leaks and criticals.

 plugins/excel/ChangeLog       |    2 ++
 plugins/excel/boot.c          |   23 +++++++++++++++++------
 plugins/excel/ms-excel-read.c |    2 ++
 3 files changed, 21 insertions(+), 6 deletions(-)
---
diff --git a/plugins/excel/ChangeLog b/plugins/excel/ChangeLog
index 47c1595..7a5065c 100644
--- a/plugins/excel/ChangeLog
+++ b/plugins/excel/ChangeLog
@@ -1,5 +1,7 @@
 2014-10-24  Morten Welinder  <terra gnome org>
 
+       * ms-excel-read.c (excel_get_chars): Plug leak.
+
        * xlsx-read.c (xlsx_file_open): Plug leak.
 
        * xlsx-read-drawing.c (cb_axis_set_position): Plus leak.
diff --git a/plugins/excel/boot.c b/plugins/excel/boot.c
index cfb9df3..37a4fa9 100644
--- a/plugins/excel/boot.c
+++ b/plugins/excel/boot.c
@@ -208,6 +208,8 @@ excel_enc_file_open (GOFileOpener const *fo, char const *enc, GOIOContext *conte
                        GsfInfile *vba = vba_child
                                ? gsf_infile_msvba_new (GSF_INFILE (vba_child), NULL)
                                : NULL;
+                       GsfStructuredBlob *blob;
+
                        if (NULL != vba) {
                                GHashTable *modules =
                                        gsf_infile_msvba_steal_modules (GSF_INFILE_MSVBA (vba));
@@ -224,11 +226,18 @@ excel_enc_file_open (GOFileOpener const *fo, char const *enc, GOIOContext *conte
                        if (vba_child)
                                g_object_unref (vba_child);
 
-                       g_object_set_data_full (G_OBJECT (wb), "MS_EXCEL_COMPOBJ_STREAM",
-                               gsf_structured_blob_read (stream), g_object_unref);
+                       blob = gsf_structured_blob_read (stream);
+                       if (blob)
+                               g_object_set_data_full (G_OBJECT (wb),
+                                                       "MS_EXCEL_COMPOBJ_STREAM",
+                                                       blob, g_object_unref);
+
+                       blob = gsf_structured_blob_read (macros);
+                       if (blob)
+                               g_object_set_data_full (G_OBJECT (wb),
+                                                       "MS_EXCEL_MACROS",
+                                                       blob, g_object_unref);
 
-                       g_object_set_data_full (G_OBJECT (wb), "MS_EXCEL_MACROS",
-                               gsf_structured_blob_read (macros), g_object_unref);
                        g_object_unref (macros);
                }
                g_object_unref (stream);
@@ -236,8 +245,10 @@ excel_enc_file_open (GOFileOpener const *fo, char const *enc, GOIOContext *conte
 
        stream = gsf_infile_child_by_name (ole, "\01Ole");
        if (stream) {
-               g_object_set_data_full (G_OBJECT (wb), "MS_EXCEL_OLE_STREAM",
-                                       gsf_structured_blob_read (stream), g_object_unref);
+               GsfStructuredBlob *blob = gsf_structured_blob_read (stream);
+               if (blob)
+                       g_object_set_data_full (G_OBJECT (wb), "MS_EXCEL_OLE_STREAM",
+                                               blob, g_object_unref);
                g_object_unref (stream);
        }
 
diff --git a/plugins/excel/ms-excel-read.c b/plugins/excel/ms-excel-read.c
index aab0b4b..0dad815 100644
--- a/plugins/excel/ms-excel-read.c
+++ b/plugins/excel/ms-excel-read.c
@@ -1040,6 +1040,8 @@ excel_get_chars (GnmXLImporter const *importer,
                        str_iconv = gsf_msole_iconv_open_for_import (*codepage);
                g_iconv (str_iconv,
                         &ptr2, &length, &outbuf, &outbytes);
+               if (codepage)
+                       g_iconv_close (str_iconv);
 
                i = outbuf - ans;
                ans[i] = 0;


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