Page MenuHomePhabricator

evas filter: fix crash issue
ClosedPublic

Authored by kimcinoo on Jan 31 2020, 3:35 AM.

Details

Summary

If image object geometry is same with image size, then a crash occurs on both
GL and SW engine.

[Test Code]
evas_object_image_size_get(img, &w, &h);
evas_object_resize(img, w, h);

[GL engine]
eng_ector_buffer_wrap should use output instead of engine for calling
evas_ector_buffer_engine_image, because it expects the output not the engine.

[SW engine]
eng_ector_buffer_wrap should check if im->image.data is NULL because
_evas_ector_software_buffer_evas_ector_buffer_engine_image_set returns before
calling evas_cache_iamge_ref if im->image.data is NULL, and it causes
a segmentation fault finally with following backtrace.

(#0) evas_cache_image_drop (im=0x0)
(#1) _evas_ector_software_buffer_efl_object_destructor
(#2) efl_destructor
(#3) _efl_del_internal
(#4) _efl_unref_internal
(#5) _efl_add_internal_end
(#6) _efl_add_end
(#7) eng_ector_buffer_wrap

Test Plan

Diff Detail

Repository
rEFL core/efl
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
kimcinoo created this revision.Jan 31 2020, 3:35 AM
kimcinoo requested review of this revision.Jan 31 2020, 3:35 AM
kimcinoo edited the test plan for this revision. (Show Details)Jan 31 2020, 3:38 AM
Hermet accepted this revision.Jan 31 2020, 4:34 AM
This revision is now accepted and ready to land.Jan 31 2020, 4:34 AM
This revision was automatically updated to reflect the committed changes.