[gnumeric] xls: leaks and criticals.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] xls: leaks and criticals.
- Date: Fri, 24 Oct 2014 23:51:45 +0000 (UTC)
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]