This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch master
in repository enventor.
View the commit online.
commit c3cf3790764f3d42db297b60992f99f84497fe2e
Author: Thanatermesis <[email protected]>
AuthorDate: Mon Feb 23 16:05:23 2026 -0500
fix: Fix memory leak and prevent NULL dereferences in enventor smart callbacks
I have identified several issues in src/lib/enventor_smart.c, including a memory leak in the build error notification callback and potential NULL pointer dereferences in the
smart callback handling.
---
src/lib/enventor_smart.c | 50 ++++++++++++++++++++++++++++++++----------------
1 file changed, 33 insertions(+), 17 deletions(-)
diff --git a/src/lib/enventor_smart.c b/src/lib/enventor_smart.c
index b4e5c9b..3ab4748 100644
--- a/src/lib/enventor_smart.c
+++ b/src/lib/enventor_smart.c
@@ -177,19 +177,26 @@ edit_view_sync_cb(void *data, Eina_Stringshare *state_name, double state_value,
evas_object_smart_callback_call(pd->obj, SIG_CURSOR_GROUP_CHANGED,
(void *) group_name);
}
- if (pd->part_highlight && !pd->disabled)
- view_part_highlight_set(VIEW_DATA, part_name);
- else
- view_part_highlight_set(VIEW_DATA, NULL);
-
- //reset previous part's state
- if (!state_name)
+ // Ensure VIEW_DATA (which typically uses focused_it) is valid
+ if (pd->focused_it)
{
- view_part_state_set(VIEW_DATA, NULL, NULL, 0);
- return;
+ if (pd->part_highlight && !pd->disabled)
+ view_part_highlight_set(VIEW_DATA, part_name);
+ else
+ view_part_highlight_set(VIEW_DATA, NULL);
}
- view_part_state_set(VIEW_DATA, part_name, state_name, state_value);
+ //reset previous part's state
+ if (pd->focused_it)
+ {
+ if (!state_name)
+ {
+ view_part_state_set(VIEW_DATA, NULL, NULL, 0);
+ return;
+ }
+
+ view_part_state_set(VIEW_DATA, part_name, state_name, state_value);
+ }
}
static void
@@ -230,6 +237,8 @@ call_error:
if (line_num || target)
edit_syntax_color_full_apply(pd->main_it->ed, EINA_TRUE);
+ if (target) eina_stringshare_del(target);
+
redoundo_data *rd = edit_redoundo_get(pd->main_it->ed);
// When msg == NULL it mean, that needed to reset error state
@@ -435,7 +444,8 @@ enventor_object_live_view_scale_set(Enventor_Object *obj, double scale)
{
ENVENTOR_OBJECT_DATA_GET_OR_RETURN(obj, pd);
- view_scale_set(VIEW_DATA, scale);
+ if (pd->focused_it)
+ view_scale_set(VIEW_DATA, scale);
}
EAPI void
@@ -443,7 +453,8 @@ enventor_object_live_view_size_set(Enventor_Object *obj, Evas_Coord w, Evas_Coor
{
ENVENTOR_OBJECT_DATA_GET_OR_RETURN(obj, pd);
- view_size_set(VIEW_DATA, w, h);
+ if (pd->focused_it)
+ view_size_set(VIEW_DATA, w, h);
}
EAPI void
@@ -470,7 +481,8 @@ enventor_object_dummy_parts_set(Enventor_Object *obj, Eina_Bool dummy_parts)
dummy_parts = !!dummy_parts;
if (pd->dummy_parts == dummy_parts) return;
- view_dummy_set(VIEW_DATA, dummy_parts);
+ if (pd->focused_it)
+ view_dummy_set(VIEW_DATA, dummy_parts);
pd->dummy_parts = dummy_parts;
}
@@ -524,7 +536,8 @@ enventor_object_wireframes_set(Enventor_Object *obj, Eina_Bool wireframes)
wireframes = !!wireframes;
- view_wireframes_set(VIEW_DATA, wireframes);
+ if (pd->focused_it)
+ view_wireframes_set(VIEW_DATA, wireframes);
pd->wireframes = wireframes;
}
@@ -566,7 +579,8 @@ enventor_object_mirror_mode_set(Enventor_Object *obj, Eina_Bool mirror_mode)
ENVENTOR_OBJECT_DATA_GET_OR_RETURN(obj, pd);
pd->mirror_mode = !!mirror_mode;
- view_mirror_mode_update(VIEW_DATA);
+ if (pd->focused_it)
+ view_mirror_mode_update(VIEW_DATA);
}
EAPI Eina_Bool
@@ -722,7 +736,8 @@ enventor_object_program_run(Enventor_Object *obj, const char *program)
{
ENVENTOR_OBJECT_DATA_GET_OR_RETURN(obj, pd);
- view_program_run(VIEW_DATA, program);
+ if (pd->focused_it)
+ view_program_run(VIEW_DATA, program);
}
EAPI void
@@ -730,7 +745,8 @@ enventor_object_programs_stop(Enventor_Object *obj)
{
ENVENTOR_OBJECT_DATA_GET_OR_RETURN(obj, pd);
- view_programs_stop(VIEW_DATA);
+ if (pd->focused_it)
+ view_programs_stop(VIEW_DATA);
}
EAPI void
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.