[epiphany/mcatanzaro/#612] bookmark: ensure tags sequence is always created
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany/mcatanzaro/#612] bookmark: ensure tags sequence is always created
- Date: Mon, 7 Jan 2019 20:01:55 +0000 (UTC)
commit 672cffa5ec652a5d5f7d98d0e0664408d58dcf8c
Author: Michael Catanzaro <mcatanzaro igalia com>
Date: Mon Jan 7 13:38:22 2019 -0600
bookmark: ensure tags sequence is always created
Somehow we are getting EphyBookmarks objects deserialized without
initializing the tags property. I'm not sure how this happens. It even
happens for JSON corresponding to bookmarks that definitely have tags
set. Anyway, ephy_bookmark_get_tags() is used as if the result is not
nullable, so let's guarantee this and return an empty list instead in
this case.
This is a speculative fix for #612. It should fix the reported crash,
but it's possible it will only uncover a subsequent crash.
src/bookmarks/ephy-bookmark.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
---
diff --git a/src/bookmarks/ephy-bookmark.c b/src/bookmarks/ephy-bookmark.c
index 43619a4ef..514a54aec 100644
--- a/src/bookmarks/ephy-bookmark.c
+++ b/src/bookmarks/ephy-bookmark.c
@@ -99,9 +99,10 @@ ephy_bookmark_set_property (GObject *object,
ephy_bookmark_set_url (self, g_value_get_string (value));
break;
case PROP_TAGS:
- if (self->tags != NULL)
- g_sequence_free (self->tags);
+ g_sequence_free (self->tags);
self->tags = g_value_get_pointer (value);
+ if (!self->tags)
+ self->tags = g_sequence_new (g_free);
break;
case PROP_TYPE:
g_free (self->type);
@@ -176,8 +177,7 @@ ephy_bookmark_finalize (GObject *object)
g_free (self->title);
g_free (self->id);
- if (self->tags)
- g_sequence_free (self->tags);
+ g_sequence_free (self->tags);
G_OBJECT_CLASS (ephy_bookmark_parent_class)->finalize (object);
}
@@ -279,6 +279,7 @@ ephy_bookmark_class_init (EphyBookmarkClass *klass)
static void
ephy_bookmark_init (EphyBookmark *self)
{
+ self->tags = g_sequence_new (g_free);
}
EphyBookmark *
@@ -456,6 +457,7 @@ GSequence *
ephy_bookmark_get_tags (EphyBookmark *self)
{
g_assert (EPHY_IS_BOOKMARK (self));
+ g_assert (self->tags);
return self->tags;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]