Pass the frame to midori_view_load_alternate_string

The frame where an error occurs may not be the main frame, and
coincidentally there is a race condition where the main frame
isn't valid, so this actually reolves a crash.
This commit is contained in:
André Stösel 2010-05-20 23:19:02 +02:00 committed by Christian Dywan
parent f04c7ef76d
commit 7753db46e0

View file

@ -1153,21 +1153,22 @@ midori_view_web_view_resource_request_cb (WebKitWebView* web_view,
#endif #endif
static void static void
midori_view_load_alternate_string (MidoriView* view, midori_view_load_alternate_string (MidoriView* view,
const gchar* data, const gchar* data,
const gchar* res_root, const gchar* res_root,
const gchar* uri) const gchar* uri,
WebKitWebFrame* web_frame)
{ {
WebKitWebView* web_view = WEBKIT_WEB_VIEW (view->web_view); WebKitWebView* web_view = WEBKIT_WEB_VIEW (view->web_view);
if (!web_frame)
web_frame = webkit_web_view_get_main_frame (web_view);
view->special = TRUE; view->special = TRUE;
#if WEBKIT_CHECK_VERSION (1, 1, 14) #if WEBKIT_CHECK_VERSION (1, 1, 14)
webkit_web_frame_load_alternate_string ( webkit_web_frame_load_alternate_string (
webkit_web_view_get_main_frame (web_view), web_frame, data, uri, uri);
data, uri, uri);
#elif WEBKIT_CHECK_VERSION (1, 1, 6) #elif WEBKIT_CHECK_VERSION (1, 1, 6)
webkit_web_frame_load_alternate_string ( webkit_web_frame_load_alternate_string (
webkit_web_view_get_main_frame (web_view), web_frame, data, res_root, uri);
data, res_root, uri);
#else #else
webkit_web_view_load_html_string ( webkit_web_view_load_html_string (
web_view, data, res_root); web_view, data, res_root);
@ -1175,12 +1176,13 @@ midori_view_load_alternate_string (MidoriView* view,
} }
static gboolean static gboolean
midori_view_display_error (MidoriView* view, midori_view_display_error (MidoriView* view,
const gchar* uri, const gchar* uri,
const gchar* title, const gchar* title,
const gchar* message, const gchar* message,
const gchar* description, const gchar* description,
const gchar* try_again) const gchar* try_again,
WebKitWebFrame* web_frame)
{ {
gchar* template_file = g_build_filename ("midori", "res", "error.html", NULL); gchar* template_file = g_build_filename ("midori", "res", "error.html", NULL);
gchar* path = sokoke_find_data_filename (template_file); gchar* path = sokoke_find_data_filename (template_file);
@ -1218,7 +1220,7 @@ midori_view_display_error (MidoriView* view,
g_free (template); g_free (template);
midori_view_load_alternate_string (view, midori_view_load_alternate_string (view,
result, res_root, uri); result, res_root, uri, web_frame);
g_free (res_root); g_free (res_root);
g_free (stock_root); g_free (stock_root);
@ -1242,7 +1244,7 @@ webkit_web_view_load_error_cb (WebKitWebView* web_view,
gchar* title = g_strdup_printf (_("Error - %s"), uri); gchar* title = g_strdup_printf (_("Error - %s"), uri);
gchar* message = g_strdup_printf (_("The page '%s' couldn't be loaded."), uri); gchar* message = g_strdup_printf (_("The page '%s' couldn't be loaded."), uri);
gboolean result = midori_view_display_error (view, uri, title, gboolean result = midori_view_display_error (view, uri, title,
message, error->message, _("Try again")); message, error->message, _("Try again"), web_frame);
g_free (message); g_free (message);
g_free (title); g_free (title);
return result; return result;
@ -3491,7 +3493,7 @@ midori_view_set_uri (MidoriView* view,
midori_view_load_alternate_string (view, midori_view_load_alternate_string (view,
data, res_root, "about:blank"); data, res_root, "about:blank", NULL);
g_free (res_root); g_free (res_root);
g_free (stock_root); g_free (stock_root);