Title: [92808] trunk/Source/WebKit/efl
Revision
92808
Author
[email protected]
Date
2011-08-10 17:54:42 -0700 (Wed, 10 Aug 2011)

Log Message

[EFL] Return from _ewk_view_smart_add if smart data can not be allocated
https://bugs.webkit.org/show_bug.cgi?id=65853

Patch by Grzegorz Czajkowski <[email protected]> on 2011-08-10
Reviewed by Kenneth Rohde Christiansen.

It prevents the crash while allocating a memory for view's smart data.
Others checking are needed for support single and tiled backing store.
As a result an empty window will be displayed.

* ewk/ewk_view.cpp:
(_ewk_view_smart_add):
(_ewk_view_smart_resize):
(_ewk_view_smart_move):
(_ewk_view_smart_show):
(_ewk_view_smart_hide):
* ewk/ewk_view_single.c:
(_ewk_view_single_smart_add):
(_ewk_view_single_smart_resize):
* ewk/ewk_view_tiled.c:
(_ewk_view_tiled_smart_add):

Modified Paths

Diff

Modified: trunk/Source/WebKit/efl/ChangeLog (92807 => 92808)


--- trunk/Source/WebKit/efl/ChangeLog	2011-08-11 00:50:41 UTC (rev 92807)
+++ trunk/Source/WebKit/efl/ChangeLog	2011-08-11 00:54:42 UTC (rev 92808)
@@ -1,5 +1,28 @@
 2011-08-10  Grzegorz Czajkowski  <[email protected]>
 
+        [EFL] Return from _ewk_view_smart_add if smart data can not be allocated
+        https://bugs.webkit.org/show_bug.cgi?id=65853
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        It prevents the crash while allocating a memory for view's smart data.
+        Others checking are needed for support single and tiled backing store.
+        As a result an empty window will be displayed.
+
+        * ewk/ewk_view.cpp:
+        (_ewk_view_smart_add):
+        (_ewk_view_smart_resize):
+        (_ewk_view_smart_move):
+        (_ewk_view_smart_show):
+        (_ewk_view_smart_hide):
+        * ewk/ewk_view_single.c:
+        (_ewk_view_single_smart_add):
+        (_ewk_view_single_smart_resize):
+        * ewk/ewk_view_tiled.c:
+        (_ewk_view_tiled_smart_add):
+
+2011-08-10  Grzegorz Czajkowski  <[email protected]>
+
         [EFL] API methods check NULL and return proper value.
         https://bugs.webkit.org/show_bug.cgi?id=65844
 

Modified: trunk/Source/WebKit/efl/ewk/ewk_view.cpp (92807 => 92808)


--- trunk/Source/WebKit/efl/ewk/ewk_view.cpp	2011-08-11 00:50:41 UTC (rev 92807)
+++ trunk/Source/WebKit/efl/ewk/ewk_view.cpp	2011-08-11 00:54:42 UTC (rev 92808)
@@ -707,10 +707,11 @@
 
     if (!sd) {
         sd = (Ewk_View_Smart_Data *)calloc(1, sizeof(Ewk_View_Smart_Data));
-        if (!sd)
+        if (!sd) {
             CRITICAL("could not allocate Ewk_View_Smart_Data");
-        else
-            evas_object_smart_data_set(o, sd);
+            return;
+        }
+        evas_object_smart_data_set(o, sd);
     }
 
     sd->bg_color.r = 255;
@@ -788,7 +789,7 @@
 
 static void _ewk_view_smart_resize(Evas_Object *o, Evas_Coord w, Evas_Coord h)
 {
-    EWK_VIEW_SD_GET(o, sd);
+    EWK_VIEW_SD_GET_OR_RETURN(o, sd);
 
     // these should be queued and processed in calculate as well!
     evas_object_resize(sd->backing_store, w, h);
@@ -799,7 +800,7 @@
 
 static void _ewk_view_smart_move(Evas_Object *o, Evas_Coord x, Evas_Coord y)
 {
-    EWK_VIEW_SD_GET(o, sd);
+    EWK_VIEW_SD_GET_OR_RETURN(o, sd);
     sd->changed.position = EINA_TRUE;
     _ewk_view_smart_changed(sd);
 }
@@ -870,7 +871,7 @@
 
 static void _ewk_view_smart_show(Evas_Object *o)
 {
-    EWK_VIEW_SD_GET(o, sd);
+    EWK_VIEW_SD_GET_OR_RETURN(o, sd);
 
     if (evas_object_clipees_get(sd->base.clipper))
         evas_object_show(sd->base.clipper);
@@ -879,7 +880,7 @@
 
 static void _ewk_view_smart_hide(Evas_Object *o)
 {
-    EWK_VIEW_SD_GET(o, sd);
+    EWK_VIEW_SD_GET_OR_RETURN(o, sd);
 
     evas_object_hide(sd->base.clipper);
     evas_object_hide(sd->backing_store);

Modified: trunk/Source/WebKit/efl/ewk/ewk_view_single.c (92807 => 92808)


--- trunk/Source/WebKit/efl/ewk/ewk_view_single.c	2011-08-11 00:50:41 UTC (rev 92807)
+++ trunk/Source/WebKit/efl/ewk/ewk_view_single.c	2011-08-11 00:54:42 UTC (rev 92808)
@@ -43,6 +43,8 @@
     _parent_sc.sc.add(o);
 
     sd = (Ewk_View_Smart_Data *)evas_object_smart_data_get(o);
+    if (!sd)
+        return;
 
     Evas_Object *clip = evas_object_rectangle_add(sd->base.evas);
     evas_object_clip_set(sd->backing_store, clip);
@@ -67,6 +69,9 @@
     Ewk_View_Smart_Data *sd = (Ewk_View_Smart_Data*)evas_object_smart_data_get(o);
     _parent_sc.sc.resize(o, w, h);
 
+    if (!sd)
+        return;
+
     // these should be queued and processed in calculate as well!
     evas_object_image_size_set(sd->backing_store, w, h);
     if (sd->animated_zoom.zoom.current < 0.00001) {

Modified: trunk/Source/WebKit/efl/ewk/ewk_view_tiled.c (92807 => 92808)


--- trunk/Source/WebKit/efl/ewk/ewk_view_tiled.c	2011-08-11 00:50:41 UTC (rev 92807)
+++ trunk/Source/WebKit/efl/ewk/ewk_view_tiled.c	2011-08-11 00:54:42 UTC (rev 92808)
@@ -71,6 +71,9 @@
     _parent_sc.sc.add(o);
 
     sd = (Ewk_View_Smart_Data*)evas_object_smart_data_get(o);
+    if (!sd)
+        return;
+
     evas_object_smart_callback_add(
         sd->main_frame, "contents,size,changed",
         _ewk_view_tiled_contents_size_changed_cb, sd);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to