e_client: fix segfault when the w or h is NULL 92/315692/1
authorJunseok Kim <juns.kim@samsung.com>
Tue, 6 Aug 2024 04:59:52 +0000 (13:59 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 6 Aug 2024 08:35:14 +0000 (17:35 +0900)
Change-Id: I79a67e6f1c01ba56542a44b0e92090fd20b6a0dd

src/bin/core/e_client.c

index caaefde..fceb24c 100644 (file)
@@ -3826,6 +3826,7 @@ e_client_size_get(E_Client *ec, int *w, int *h)
 E_API void
 e_client_geometry_get(E_Client *ec, int *x, int *y, int *w, int *h)
 {
+   int vx, vy, vw, vh;
 
    E_OBJECT_CHECK(ec);
    E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE);
@@ -3841,9 +3842,15 @@ e_client_geometry_get(E_Client *ec, int *x, int *y, int *w, int *h)
      }
    else if (view_client)
      {
-        e_view_client_geometry_get(view_client, x, y, w, h);
-        if (*w != 0 || *h != 0)
-          return;
+        e_view_client_geometry_get(view_client, &vx, &vy, &vw, &vh);
+        if (vw != 0 || vh != 0)
+          {
+             if (x) *x = vx;
+             if (y) *y = vy;
+             if (w) *w = vw;
+             if (h) *h = vh;
+             return;
+          }
 
         /* In this case (w == 0 && h == 0), there is no image buffer in e_comp_object, thus it
            * should return geometry value of ec itself. It usually happens if