From 4927c8c6923991ae68db21e66749c1fb99240b08 Mon Sep 17 00:00:00 2001 From: Přemysl Eric Janouch Date: Mon, 8 Aug 2022 15:03:22 +0200 Subject: Don't crash on orphan URIs --- fiv-io.c | 5 +++-- fiv.c | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/fiv-io.c b/fiv-io.c index 69a5a83..1e476e9 100644 --- a/fiv-io.c +++ b/fiv-io.c @@ -1892,14 +1892,15 @@ open_resvg( resvg_options *opt = resvg_options_create(); resvg_options_load_system_fonts(opt); - resvg_options_set_resources_dir(opt, g_file_peek_path(base_file)); + if (base_file) + resvg_options_set_resources_dir(opt, g_file_peek_path(base_file)); if (ctx->screen_dpi) resvg_options_set_dpi(opt, ctx->screen_dpi); resvg_render_tree *tree = NULL; int err = resvg_parse_tree_from_data(data, len, opt, &tree); resvg_options_destroy(opt); - g_object_unref(base_file); + g_clear_object(&base_file); if (err != RESVG_OK) { set_error(error, load_resvg_error(err)); return NULL; diff --git a/fiv.c b/fiv.c index 9d814ab..449d113 100644 --- a/fiv.c +++ b/fiv.c @@ -634,7 +634,11 @@ switch_to_view(void) static gchar * parent_uri(GFile *child_file) { + // The empty URI results in a convenient dummy GFile implementation. GFile *parent = g_file_get_parent(child_file); + if (!parent) + return g_strdup(""); + gchar *parent_uri = g_file_get_uri(parent); g_object_unref(parent); return parent_uri; -- cgit v1.2.3-70-g09d2