- 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);