mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-04-25 00:26:52 +02:00
Merge branch 'bookmarkfile-crash' into 'master'
gbookmarkfile: Don't crash if we're not visited See merge request GNOME/glib!1514
This commit is contained in:
commit
e944cf8b1c
@ -552,9 +552,7 @@ static gchar *
|
|||||||
bookmark_item_dump (BookmarkItem *item)
|
bookmark_item_dump (BookmarkItem *item)
|
||||||
{
|
{
|
||||||
GString *retval;
|
GString *retval;
|
||||||
gchar *added, *visited, *modified;
|
|
||||||
gchar *escaped_uri;
|
gchar *escaped_uri;
|
||||||
gchar *buffer;
|
|
||||||
|
|
||||||
/* at this point, we must have at least a registered application; if we don't
|
/* at this point, we must have at least a registered application; if we don't
|
||||||
* we don't screw up the bookmark file, and just skip this item
|
* we don't screw up the bookmark file, and just skip this item
|
||||||
@ -567,43 +565,63 @@ bookmark_item_dump (BookmarkItem *item)
|
|||||||
|
|
||||||
retval = g_string_sized_new (4096);
|
retval = g_string_sized_new (4096);
|
||||||
|
|
||||||
added = g_date_time_format_iso8601 (item->added);
|
g_string_append (retval, " <" XBEL_BOOKMARK_ELEMENT " ");
|
||||||
modified = g_date_time_format_iso8601 (item->modified);
|
|
||||||
visited = g_date_time_format_iso8601 (item->visited);
|
|
||||||
|
|
||||||
escaped_uri = g_markup_escape_text (item->uri, -1);
|
escaped_uri = g_markup_escape_text (item->uri, -1);
|
||||||
|
|
||||||
buffer = g_strconcat (" <"
|
g_string_append (retval, XBEL_HREF_ATTRIBUTE "=\"");
|
||||||
XBEL_BOOKMARK_ELEMENT
|
g_string_append (retval, escaped_uri);
|
||||||
" "
|
g_string_append (retval , "\" ");
|
||||||
XBEL_HREF_ATTRIBUTE "=\"", escaped_uri, "\" "
|
|
||||||
XBEL_ADDED_ATTRIBUTE "=\"", added, "\" "
|
|
||||||
XBEL_MODIFIED_ATTRIBUTE "=\"", modified, "\" "
|
|
||||||
XBEL_VISITED_ATTRIBUTE "=\"", visited, "\">\n",
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
g_string_append (retval, buffer);
|
|
||||||
|
|
||||||
g_free (escaped_uri);
|
g_free (escaped_uri);
|
||||||
g_free (visited);
|
|
||||||
g_free (modified);
|
if (item->added)
|
||||||
g_free (added);
|
{
|
||||||
g_free (buffer);
|
char *added;
|
||||||
|
|
||||||
|
added = g_date_time_format_iso8601 (item->added);
|
||||||
|
g_string_append (retval, XBEL_ADDED_ATTRIBUTE "=\"");
|
||||||
|
g_string_append (retval, added);
|
||||||
|
g_string_append (retval, "\" ");
|
||||||
|
g_free (added);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item->modified)
|
||||||
|
{
|
||||||
|
char *modified;
|
||||||
|
|
||||||
|
modified = g_date_time_format_iso8601 (item->modified);
|
||||||
|
g_string_append (retval, XBEL_MODIFIED_ATTRIBUTE "=\"");
|
||||||
|
g_string_append (retval, modified);
|
||||||
|
g_string_append (retval, "\" ");
|
||||||
|
g_free (modified);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item->visited)
|
||||||
|
{
|
||||||
|
char *visited;
|
||||||
|
|
||||||
|
visited = g_date_time_format_iso8601 (item->visited);
|
||||||
|
g_string_append (retval, XBEL_VISITED_ATTRIBUTE "=\"");
|
||||||
|
g_string_append (retval, visited);
|
||||||
|
g_string_append (retval, "\" ");
|
||||||
|
g_free (visited);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (retval->str[retval->len - 1] == ' ')
|
||||||
|
g_string_truncate (retval, retval->len - 1);
|
||||||
|
g_string_append (retval, ">\n");
|
||||||
|
|
||||||
if (item->title)
|
if (item->title)
|
||||||
{
|
{
|
||||||
gchar *escaped_title;
|
gchar *escaped_title;
|
||||||
|
|
||||||
escaped_title = g_markup_escape_text (item->title, -1);
|
escaped_title = g_markup_escape_text (item->title, -1);
|
||||||
buffer = g_strconcat (" "
|
g_string_append (retval, " " "<" XBEL_TITLE_ELEMENT ">");
|
||||||
"<" XBEL_TITLE_ELEMENT ">",
|
g_string_append (retval, escaped_title);
|
||||||
escaped_title,
|
g_string_append (retval, "</" XBEL_TITLE_ELEMENT ">\n");
|
||||||
"</" XBEL_TITLE_ELEMENT ">\n",
|
|
||||||
NULL);
|
|
||||||
g_string_append (retval, buffer);
|
|
||||||
|
|
||||||
g_free (escaped_title);
|
g_free (escaped_title);
|
||||||
g_free (buffer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item->description)
|
if (item->description)
|
||||||
@ -611,15 +629,11 @@ bookmark_item_dump (BookmarkItem *item)
|
|||||||
gchar *escaped_desc;
|
gchar *escaped_desc;
|
||||||
|
|
||||||
escaped_desc = g_markup_escape_text (item->description, -1);
|
escaped_desc = g_markup_escape_text (item->description, -1);
|
||||||
buffer = g_strconcat (" "
|
g_string_append (retval, " " "<" XBEL_DESC_ELEMENT ">");
|
||||||
"<" XBEL_DESC_ELEMENT ">",
|
g_string_append (retval, escaped_desc);
|
||||||
escaped_desc,
|
g_string_append (retval, "</" XBEL_DESC_ELEMENT ">\n");
|
||||||
"</" XBEL_DESC_ELEMENT ">\n",
|
|
||||||
NULL);
|
|
||||||
g_string_append (retval, buffer);
|
|
||||||
|
|
||||||
g_free (escaped_desc);
|
g_free (escaped_desc);
|
||||||
g_free (buffer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item->metadata)
|
if (item->metadata)
|
||||||
@ -629,17 +643,12 @@ bookmark_item_dump (BookmarkItem *item)
|
|||||||
metadata = bookmark_metadata_dump (item->metadata);
|
metadata = bookmark_metadata_dump (item->metadata);
|
||||||
if (metadata)
|
if (metadata)
|
||||||
{
|
{
|
||||||
buffer = g_strconcat (" "
|
g_string_append (retval, " " "<" XBEL_INFO_ELEMENT ">\n");
|
||||||
"<" XBEL_INFO_ELEMENT ">\n",
|
g_string_append (retval, metadata);
|
||||||
metadata,
|
g_string_append (retval, " " "</" XBEL_INFO_ELEMENT ">\n");
|
||||||
" "
|
|
||||||
"</" XBEL_INFO_ELEMENT ">\n",
|
|
||||||
NULL);
|
|
||||||
retval = g_string_append (retval, buffer);
|
|
||||||
|
|
||||||
g_free (buffer);
|
g_free (metadata);
|
||||||
g_free (metadata);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_string_append (retval, " </" XBEL_BOOKMARK_ELEMENT ">\n");
|
g_string_append (retval, " </" XBEL_BOOKMARK_ELEMENT ">\n");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user