aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2022-08-08 15:03:22 +0200
committerPřemysl Eric Janouch <p@janouch.name>2022-08-08 15:14:20 +0200
commit4927c8c6923991ae68db21e66749c1fb99240b08 (patch)
tree32d5f98c3b4335b4b66bfa10a5410fc31ba093ec
parente6341e59bbc248b84a33aef263c90d6eb97e9302 (diff)
downloadfiv-4927c8c6923991ae68db21e66749c1fb99240b08.tar.gz
fiv-4927c8c6923991ae68db21e66749c1fb99240b08.tar.xz
fiv-4927c8c6923991ae68db21e66749c1fb99240b08.zip
Don't crash on orphan URIs
-rw-r--r--fiv-io.c5
-rw-r--r--fiv.c4
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;