evas vg: check for OOM when calloc() 12/200012/2
authorHermet Park <hermetpark@gmail.com>
Mon, 18 Feb 2019 06:17:41 +0000 (15:17 +0900)
committerHermet Park <chuneon.park@samsung.com>
Mon, 18 Feb 2019 06:41:32 +0000 (06:41 +0000)
Change-Id: I9f0b43ad7d45d8263fa8ab48dca44d43d921a07d

src/static_libs/vg_common/vg_common_svg.c

index 9c69b14..6b18a0e 100644 (file)
@@ -899,6 +899,7 @@ _create_gradient_node(Efl_VG *vg)
    for (i = 0; i < count; i++)
      {
         new_stop = calloc(1, sizeof(Efl_Gfx_Gradient_Stop));
+        if (!new_stop) goto oom_error;
         memcpy(new_stop, stops, sizeof(Efl_Gfx_Gradient_Stop));
         grad->stops = eina_list_append(grad->stops, new_stop);
         stops++;
@@ -907,6 +908,7 @@ _create_gradient_node(Efl_VG *vg)
      {
         grad->type = SVG_LINEAR_GRADIENT;
         grad->linear = calloc(1, sizeof(Svg_Linear_Gradient));
+        if (!grad->linear) goto oom_error;
         evas_vg_gradient_linear_start_get(vg, &grad->linear->x1, &grad->linear->y1);
         evas_vg_gradient_linear_end_get(vg, &grad->linear->x2, &grad->linear->y2);
      }
@@ -914,12 +916,18 @@ _create_gradient_node(Efl_VG *vg)
      {
         grad->type = SVG_RADIAL_GRADIENT;
         grad->radial = calloc(1, sizeof(Svg_Radial_Gradient));
+        if (!grad->radial) goto oom_error;
         evas_vg_gradient_radial_center_get(vg, &grad->radial->cx, &grad->radial->cy);
         evas_vg_gradient_radial_focal_get(vg, &grad->radial->fx, &grad->radial->fy);
         grad->radial->r = evas_vg_gradient_radial_radius_get(vg);
      }
 
    return grad;
+
+oom_error:
+   ERR("OOM: Failed calloc()");
+   return grad;
+
 }
 
 static void