Summary:
The result of evas_object_textblock_cursor_content_get() API has to be cleaned
by outside. _edje_entry_cursor_content_get() is calling free() inside of the
function for handle the result using static pointer. But, the caller of
_edje_entry_cursor_content_get() is already handling the result using free().
It can cause double free problem.
The bigger issue is in elementary. See elm_entry_cursor_content_get() API's
document. The document advice developers to free the result when it is done.
@fix
Test Plan: N/A
Reviewers: tasn, raster, woohyun
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2991
char *
_edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur)
{
- static char *s = NULL;
Evas_Textblock_Cursor *c = _cursor_get(rp, cur);
if (!c) return NULL;
- if (s)
- {
- free(s);
- s = NULL;
- }
- s = evas_textblock_cursor_content_get(c);
- return s;
+ return evas_textblock_cursor_content_get(c);
}
void