From dd9359ae4c870c72bd2f57e322cc61602776a358 Mon Sep 17 00:00:00 2001
From: leigh123linux <leigh123linux@googlemail.com>
Date: Thu, 10 Sep 2015 13:04:05 +0100
Subject: [PATCH] fix xml bg warning
---
libcinnamon-desktop/gnome-bg.c | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/libcinnamon-desktop/gnome-bg.c b/libcinnamon-desktop/gnome-bg.c
index e468cc2..fb0c46a 100644
--- a/libcinnamon-desktop/gnome-bg.c
+++ b/libcinnamon-desktop/gnome-bg.c
@@ -2836,14 +2836,13 @@ handle_text (GMarkupParseContext *context,
GError **err)
{
SlideShow *parser = user_data;
+ FileSize *fs;
+ gint i;
g_return_if_fail (parser != NULL);
g_return_if_fail (parser->slides != NULL);
- g_return_if_fail (parser->slides->tail != NULL);
- Slide *slide = parser->slides->tail->data;
- FileSize *fs;
- gint i;
+ Slide *slide = parser->slides->tail ? parser->slides->tail->data : NULL;
if (stack_is (parser, "year", "starttime", "background", NULL)) {
parser->start_tm.tm_year = parse_int (text) - 1900;
@@ -2865,11 +2864,15 @@ handle_text (GMarkupParseContext *context,
}
else if (stack_is (parser, "duration", "static", "background", NULL) ||
stack_is (parser, "duration", "transition", "background", NULL)) {
+ g_return_if_fail (slide != NULL);
+
slide->duration = g_strtod (text, NULL);
parser->total_duration += slide->duration;
}
else if (stack_is (parser, "file", "static", "background", NULL) ||
stack_is (parser, "from", "transition", "background", NULL)) {
+ g_return_if_fail (slide != NULL);
+
for (i = 0; text[i]; i++) {
if (!g_ascii_isspace (text[i]))
break;
@@ -2886,12 +2889,16 @@ handle_text (GMarkupParseContext *context,
}
else if (stack_is (parser, "size", "file", "static", "background", NULL) ||
stack_is (parser, "size", "from", "transition", "background", NULL)) {
+ g_return_if_fail (slide != NULL);
+
fs = slide->file1->data;
fs->file = g_strdup (text);
if (slide->file1->next != NULL)
parser->has_multiple_sizes = TRUE;
}
else if (stack_is (parser, "to", "transition", "background", NULL)) {
+ g_return_if_fail (slide != NULL);
+
for (i = 0; text[i]; i++) {
if (!g_ascii_isspace (text[i]))
break;
@@ -2907,6 +2914,8 @@ handle_text (GMarkupParseContext *context,
parser->has_multiple_sizes = TRUE;
}
else if (stack_is (parser, "size", "to", "transition", "background", NULL)) {
+ g_return_if_fail (slide != NULL);
+
fs = slide->file2->data;
fs->file = g_strdup (text);
if (slide->file2->next != NULL)
@@ -3180,6 +3189,9 @@ gnome_bg_changes_with_time (GnomeBG *bg)
g_return_val_if_fail (bg != NULL, FALSE);
+ if (!bg->filename)
+ return FALSE;
+
show = get_as_slideshow (bg, bg->filename);
if (show)
return g_queue_get_length (show->slides) > 1;
--
2.5.0