From: Ryuan Choi Date: Wed, 15 Sep 2010 04:03:16 +0000 (+0900) Subject: [elm_webview]fix crash in navigator and add EINA_UNLIKELY in some of if statement X-Git-Tag: origin~201 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=69efe4f7d0144bcfbc19002e943e98320d836b7c;p=framework%2Fuifw%2Felementary.git [elm_webview]fix crash in navigator and add EINA_UNLIKELY in some of if statement --- diff --git a/src/lib/els_webview.c b/src/lib/els_webview.c index 8118403..d337b2d 100644 --- a/src/lib/els_webview.c +++ b/src/lib/els_webview.c @@ -10,11 +10,11 @@ #include #define SMART_NAME "els_webview" -#define API_ENTRY Smart_Data *sd; sd = evas_object_smart_data_get(obj); if ((!obj) || (!sd) || (evas_object_type_get(obj) && strcmp(evas_object_type_get(obj), SMART_NAME))) +#define API_ENTRY Smart_Data *sd; sd = evas_object_smart_data_get(obj); if (EINA_UNLIKELY((!obj) || (!sd) || (evas_object_type_get(obj) && strcmp(evas_object_type_get(obj), SMART_NAME)))) #define INTERNAL_ENTRY Smart_Data *sd; sd = evas_object_smart_data_get(obj); if (!sd) return; #define EWK_VIEW_PRIV_GET_OR_RETURN(sd, ptr, ...) \ Ewk_View_Private_Data* ptr = ((Ewk_View_Smart_Data*)sd)->_priv; \ - if (!ptr) \ + if (EINA_UNLIKELY(!ptr)) \ { \ ERR("no private data for object %p (%s)", \ ((Ewk_View_Smart_Data*)sd)->self, \ @@ -928,10 +928,17 @@ _smart_navigation_policy_decision(Ewk_View_Smart_Data *esd, Ewk_Frame_Resource_R if (sd->scheme_func_hash) { - protocol_hack = strstr(request->url, ":"); - *protocol_hack = '\0'; - func = (Elm_WebView_Mime_Cb) eina_hash_find(sd->scheme_func_hash, request->url); - *protocol_hack = ':'; + if (!protocol_hack) + { + protocol_hack = "http"; //FIXME + func = (Elm_WebView_Mime_Cb) eina_hash_find(sd->scheme_func_hash, request->url); + } + else + { + *protocol_hack = '\0'; + func = (Elm_WebView_Mime_Cb) eina_hash_find(sd->scheme_func_hash, request->url); + *protocol_hack = ':'; + } } if (!func)