forked from enlightenment/efl
edje: Fix double free scenario caused by static pointer.
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
This commit is contained in:
parent
bd8f585d74
commit
f210e42966
|
@ -3871,18 +3871,11 @@ _edje_entry_cursor_is_visible_format_get(Edje_Real_Part *rp, Edje_Cursor cur)
|
||||||
char *
|
char *
|
||||||
_edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur)
|
_edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur)
|
||||||
{
|
{
|
||||||
static char *s = NULL;
|
|
||||||
Evas_Textblock_Cursor *c = _cursor_get(rp, cur);
|
Evas_Textblock_Cursor *c = _cursor_get(rp, cur);
|
||||||
|
|
||||||
if (!c) return NULL;
|
if (!c) return NULL;
|
||||||
if (s)
|
|
||||||
{
|
|
||||||
free(s);
|
|
||||||
s = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
s = evas_textblock_cursor_content_get(c);
|
return evas_textblock_cursor_content_get(c);
|
||||||
return s;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in New Issue