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);
openSUSE Build Service is sponsored by