From d4db1bb6015720efc77097a083d83c0d1df73824 Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Mon, 7 Dec 2020 16:52:54 +0900 Subject: [PATCH] png: handle 9-patch ends with stretch Summary: The strech region has paired information; total and strechable. Refer to function _strech_region_load retrieving strech region info. But if 9-patch information line ends with strechable, png did not push the strechable information. And it leads to devide by zero. This patch is adding strechable info to the strech region, if 9-patch information ends with strechable. Test Plan: [Code] {F4219278} {F4219280} [Test] ECORE_EVAS_ENGINE=opengl_x11 ./evas-image-9patch ./end_with_strech.9.png Reviewers: Hermet, jsuya, herb, cedric Reviewed By: Hermet Subscribers: #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12204 Change-Id: I6242b2686358c28e2efbb152d40e59a898ee435d --- src/modules/evas/image_loaders/png/evas_image_load_png.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/modules/evas/image_loaders/png/evas_image_load_png.c b/src/modules/evas/image_loaders/png/evas_image_load_png.c index 962af15..edc14d8 100644 --- a/src/modules/evas/image_loaders/png/evas_image_load_png.c +++ b/src/modules/evas/image_loaders/png/evas_image_load_png.c @@ -639,6 +639,13 @@ evas_image_load_file_head_with_data_png(void *loader_data, evas_loader_helper_stretch_region_push(&prop->stretch.horizontal.region, ¤t, stretchable); } + // End with strechable, add length info + if (stretchable) + { + evas_loader_helper_stretch_region_push(&prop->stretch.horizontal.region, + ¤t, stretchable); + stretchable = !stretchable; + } current = 0; @@ -679,6 +686,13 @@ evas_image_load_file_head_with_data_png(void *loader_data, evas_loader_helper_stretch_region_push(&prop->stretch.vertical.region, ¤t, stretchable); } + // End with strechable, add length info + if (stretchable) + { + evas_loader_helper_stretch_region_push(&prop->stretch.vertical.region, + ¤t, stretchable); + stretchable = !stretchable; + } // Content zone is optional, if not provided, we should use the one we guessed if (prop->content.x == 0 || prop->content.y == 0) -- 2.7.4