[gnumeric] ssconvert: fix criticals.



commit 6853841b1d635427a4b90ab0e4b6db768ae2d11c
Author: Morten Welinder <terra gnome org>
Date:   Mon Apr 13 22:17:55 2020 -0400

    ssconvert: fix criticals.

 ChangeLog                |  6 ++++++
 src/sheet-object-graph.c | 13 +++++++++++--
 src/ssconvert.c          |  1 -
 3 files changed, 17 insertions(+), 3 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index f0f71e5d8..6197cafcb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2020-04-13  Morten Welinder  <terra gnome org>
+
+       * src/sheet-object-graph.c (gnm_sog_write_image): Fix criticals.
+
+       * src/ssconvert.c (do_split_save): Fix double-free.
+
 2020-04-12  Morten Welinder  <terra gnome org>
 
        * src/ssconvert.c (clipboard_export): Avoid critical.
diff --git a/src/sheet-object-graph.c b/src/sheet-object-graph.c
index b3f257c98..3e73bcc88 100644
--- a/src/sheet-object-graph.c
+++ b/src/sheet-object-graph.c
@@ -265,6 +265,7 @@ gnm_sog_write_image (SheetObject const *so, char const *format, double resolutio
        gboolean res = FALSE;
        double coords[4];
        double w, h;
+       GOImageFormat imfmt;
 
        if (so->sheet) {
                sheet_object_position_pts_get (GNM_SO (sog), coords);
@@ -279,8 +280,16 @@ gnm_sog_write_image (SheetObject const *so, char const *format, double resolutio
 
        g_return_if_fail (w > 0 && h > 0);
 
-       res = gog_graph_export_image (sog->graph, go_image_get_format_from_name (format),
-                                     output, resolution, resolution);
+       imfmt = go_image_get_format_from_name (format);
+       if (imfmt == GO_IMAGE_FORMAT_UNKNOWN) {
+               res = FALSE;
+               if (err)
+                       *err = g_error_new (gsf_output_error_id (), 0,
+                                           _("Unknown image format"));
+       } else {
+               res = gog_graph_export_image (sog->graph, imfmt,
+                                             output, resolution, resolution);
+       }
 
        if (!res && err && *err == NULL)
                *err = g_error_new (gsf_output_error_id (), 0,
diff --git a/src/ssconvert.c b/src/ssconvert.c
index a01509294..41b3a6931 100644
--- a/src/ssconvert.c
+++ b/src/ssconvert.c
@@ -867,7 +867,6 @@ do_split_save (GOFileSaver *fs, WorkbookView *wbv,
                                        g_printerr ("Failed to write %s: %s\n", tmpfile, err->message);
                                        g_error_free (err);
                                        res = 1;
-                                       g_free (tmpfile);
                                }
 
                                g_free (tmpfile);


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