From 8e311db414950e399099acc1c0af620ee2f37b52 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Mon, 24 Jul 2017 13:26:28 +0900 Subject: [PATCH] edje_cc - make svg loader (still beta) handle out of memory nicely print ERR and abort. --- src/bin/edje/edje_svg_loader.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/bin/edje/edje_svg_loader.c b/src/bin/edje/edje_svg_loader.c index beafb48..65e17f1 100644 --- a/src/bin/edje/edje_svg_loader.c +++ b/src/bin/edje/edje_svg_loader.c @@ -1113,7 +1113,15 @@ _attr_parse_polygon_points(const char *str, double **points, int *point_count) tmp[tmp_count++] = num; if (tmp_count == 50) { - point_array = realloc(point_array, (count + tmp_count) * sizeof(double)); + double *tmp; + + tmp = realloc(point_array, (count + tmp_count) * sizeof(double)); + if (!tmp) + { + ERR("allocation for point array failed. out of memory"); + abort(); + } + point_array = tmp; memcpy(&point_array[count], tmp, tmp_count * sizeof(double)); count += tmp_count; tmp_count = 0; @@ -1122,7 +1130,15 @@ _attr_parse_polygon_points(const char *str, double **points, int *point_count) if (tmp_count > 0) { - point_array = realloc(point_array, (count + tmp_count) * sizeof(double)); + double *tmp; + + tmp = realloc(point_array, (count + tmp_count) * sizeof(double)); + if (!tmp) + { + ERR("allocation for point array failed. out of memory"); + abort(); + } + point_array = tmp; memcpy(&point_array[count], tmp, tmp_count * sizeof(double)); count += tmp_count; } -- 2.7.4