File yelp-gio-port-issues.patch of Package yelp
Index: yelp-2.24.0/src/yelp-utils.c
===================================================================
--- yelp-2.24.0.orig/src/yelp-utils.c
+++ yelp-2.24.0/src/yelp-utils.c
@@ -414,12 +414,12 @@ yelp_uri_resolve (gchar *uri, gchar **re
file_cut++;
ret = resolve_full_file (&intern_uri[file_cut]);
if (ret == YELP_RRN_TYPE_EXTERNAL) {
+ *result = g_strdup (&uri[file_cut]);
*section = NULL;
- *result = g_strdup (uri);
}
else if (ret == YELP_RRN_TYPE_ERROR) {
- *section = NULL;
*result = NULL;
+ *section = NULL;
} else {
*result = g_strdup (&intern_uri[file_cut]);
*section = intern_section;
Index: yelp-2.24.0/src/yelp-window.c
===================================================================
--- yelp-2.24.0.orig/src/yelp-window.c
+++ yelp-2.24.0/src/yelp-window.c
@@ -1046,8 +1046,13 @@ yelp_window_load (YelpWindow *window, co
break;
case YELP_RRN_TYPE_HTML:
case YELP_RRN_TYPE_XHTML:
- priv->base_uri = g_strdup ("file:///fakefile");
- window_do_load_html (window, real_uri, frag_id, type, TRUE);
+ {
+ gchar *uri;
+ priv->base_uri = g_strdup ("file:///fakefile");
+ uri = g_filename_to_uri (real_uri, NULL, NULL);
+ window_do_load_html (window, uri, frag_id, type, TRUE);
+ g_free (uri);
+ }
break;
case YELP_RRN_TYPE_EXTERNAL:
{
@@ -1609,7 +1614,6 @@ window_do_load_html (YelpWindow *wind
gchar buffer[BUFFER_SIZE];
GtkAction *action;
gchar *real_uri = NULL;
- gchar *base_uri = NULL;
gboolean handled = TRUE;
@@ -1646,12 +1650,10 @@ window_do_load_html (YelpWindow *wind
goto done;
}
- base_uri = g_filename_to_uri (uri, NULL, NULL);
if (frag_id) {
- real_uri = g_strconcat (base_uri, "#", frag_id, NULL);
- g_free (base_uri);
+ real_uri = g_strconcat (uri, "#", frag_id, NULL);
} else {
- real_uri = base_uri;
+ real_uri = g_strdup (uri);
}
yelp_html_set_base_uri (priv->html_view, real_uri);
@@ -1669,6 +1671,10 @@ window_do_load_html (YelpWindow *wind
while ((g_input_stream_read_all
((GInputStream *)stream, buffer, BUFFER_SIZE, &n, NULL, NULL))) {
gchar *tmp;
+
+ if (n == 0)
+ break;
+
tmp = g_utf8_strup (buffer, n);
if (strstr (tmp, "<FRAMESET")) {
yelp_html_frames (priv->html_view, TRUE);