This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch master
in repository evisum.
View the commit online.
commit 43a609ade4cf1fddd1530265e89c866b4ec17303
Author: Alastair Poole <[email protected]>
AuthorDate: Sat Mar 28 05:49:53 2026 +0000
process_list: guard more carefully
---
src/bin/ui/evisum_ui_process_list.c | 45 ++++++++++++++++++++++++-------------
1 file changed, 30 insertions(+), 15 deletions(-)
diff --git a/src/bin/ui/evisum_ui_process_list.c b/src/bin/ui/evisum_ui_process_list.c
index 9008e8e..be4cb76 100644
--- a/src/bin/ui/evisum_ui_process_list.c
+++ b/src/bin/ui/evisum_ui_process_list.c
@@ -387,20 +387,17 @@ _evisum_ui_process_list_content_get(void *data, Evas_Object *obj, const char *so
ui = view->ui;
proc = (void *) data;
- if (strcmp(source, "elm.swallow.content")) return NULL;
+ if (!source || strcmp(source, "elm.swallow.content")) return NULL;
if (!proc) return NULL;
Evas_Object *row = evisum_ui_widget_exel_item_cache_object_get(view->widget_exel);
- if (!row) {
- fprintf(stderr, "Error: Object cache creation failed.\n");
- exit(-1);
- }
+ if (!row) return NULL;
evas_object_geometry_get(view->btn_menu, NULL, NULL, &bw, NULL);
w = evisum_ui_widget_exel_field_width_get(view->widget_exel, PROC_FIELD_CMD);
w += bw;
- snprintf(buf, sizeof(buf), "%s", proc->command);
+ snprintf(buf, sizeof(buf), "%s", proc->command ?: "");
cell = evisum_ui_widget_exel_item_object_get(row, "cmd");
evisum_ui_widget_exel_item_text_object_if_changed_set(cell, buf);
evas_object_geometry_get(cell, NULL, NULL, &ow, NULL);
@@ -480,8 +477,8 @@ _evisum_ui_process_list_content_get(void *data, Evas_Object *obj, const char *so
evisum_ui_widget_exel_item_field_text_set(view->widget_exel, row, PROC_FIELD_SHARED, "share", buf);
if ((ui->proc.has_wchan) && (proc->state[0] == 's' && proc->state[1] == 'l'))
- snprintf(buf, sizeof(buf), "%s", proc->wchan);
- else snprintf(buf, sizeof(buf), "%s", proc->state);
+ snprintf(buf, sizeof(buf), "%s", proc->wchan ?: "-");
+ else snprintf(buf, sizeof(buf), "%s", proc->state ?: "-");
evisum_ui_widget_exel_item_field_text_set(view->widget_exel, row, PROC_FIELD_STATE, "state", buf);
_evisum_ui_process_list_run_time_set(buf, sizeof(buf), proc->run_time);
@@ -521,7 +518,8 @@ _evisum_ui_process_list_summary_update(Evisum_Ui_Process_List_View *view) {
elm_progressbar_value_set(view->summary.pb_cpu, ui->cpu_usage / 100.0);
- elm_progressbar_value_set(view->summary.pb_mem, (ui->mem_total / 100) / ui->mem_total);
+ if (ui->mem_total) elm_progressbar_value_set(view->summary.pb_mem, (double) ui->mem_used / (double) ui->mem_total);
+ else elm_progressbar_value_set(view->summary.pb_mem, 0.0);
eina_strbuf_append_printf(buf, "%s / %s ", evisum_size_format(ui->mem_used, 0),
evisum_size_format(ui->mem_total, 0));
elm_object_part_text_set(view->summary.pb_mem, "elm.text.status", eina_strbuf_string_get(buf));
@@ -741,6 +739,7 @@ _evisum_ui_process_list_feedback_cb(void *data, Ecore_Thread *thread EINA_UNUSED
view = data;
list = msg;
+ if (!view || !view->widget_exel || !list) return;
n = eina_list_count(list);
@@ -748,6 +747,10 @@ _evisum_ui_process_list_feedback_cb(void *data, Ecore_Thread *thread EINA_UNUSED
it = evisum_ui_widget_exel_genlist_first_item_get(view->widget_exel);
EINA_LIST_FREE(list, proc) {
+ if (!it) {
+ proc_info_free(proc);
+ continue;
+ }
Proc_Info *prev = evisum_ui_widget_exel_object_item_data_get(it);
if (prev) proc_info_free(prev);
@@ -773,7 +776,7 @@ _evisum_ui_process_list_feedback_cb(void *data, Ecore_Thread *thread EINA_UNUSED
view->poll_count++;
- if (evisum_ui_effects_enabled_get(view->ui)) _evisum_ui_process_list_indicator(view);
+ if (view->ui && evisum_ui_effects_enabled_get(view->ui)) _evisum_ui_process_list_indicator(view);
}
static Evas_Object *
@@ -815,6 +818,7 @@ _evisum_ui_process_list_field_header_mouse_up_cb(void *data, Evas *e EINA_UNUSED
Evas_Event_Mouse_Up *ev = event_info;
(void) e;
(void) obj;
+ if (!view || !ev) return;
evisum_ui_widget_exel_field_resize_mouse_up(view->widget_exel, ev);
}
@@ -876,6 +880,7 @@ static void
_evisum_ui_process_list_item_menu_cancel_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) {
Evisum_Ui_Process_List_View *view = data;
+ if (!view || !view->menu) return;
elm_menu_close(view->menu);
view->menu = NULL;
}
@@ -987,7 +992,7 @@ _evisum_ui_process_list_item_menu_create(Evisum_Ui_Process_List_View *view, Proc
stopped = !(!strcmp(proc->state, "stop"));
menu_it = _evisum_ui_process_list_item_menu_add(menu, NULL, evisum_icon_cache_find(view->icon_cache, proc),
- proc->command, NULL, NULL);
+ proc->command ?: "-", NULL, NULL);
menu_it2 = _evisum_ui_process_list_item_menu_add(menu, menu_it, "actions", _("Actions"), NULL, NULL);
_evisum_ui_process_list_item_menu_actions_add(menu, menu_it2, view);
@@ -1025,11 +1030,13 @@ _evisum_ui_process_list_item_pid_secondary_clicked_cb(void *data, Evas *e EINA_U
Proc_Info *proc;
ev = event_info;
+ if (!ev) return;
if (ev->button != 3) return;
view = data;
(void) obj;
it = evisum_ui_widget_exel_genlist_at_xy_item_get(view->widget_exel, ev->output.x, ev->output.y, NULL);
+ if (!it) return;
proc = evisum_ui_widget_exel_object_item_data_get(it);
if (!proc) return;
@@ -1048,6 +1055,7 @@ _evisum_ui_process_list_item_pid_clicked_cb(void *data, Evas_Object *obj EINA_UN
view = data;
it = event_info;
+ if (!it) return;
evisum_ui_widget_exel_genlist_item_selected_set(it, 0);
if (view->menu) return;
@@ -1089,8 +1097,9 @@ _evisum_ui_process_list_glist_scroll_stopped_cb(void *data, Evas_Object *obj EIN
static Eina_Bool
_evisum_ui_process_list_main_menu_timer_cb(void *data) {
Evisum_Ui_Process_List_View *view = data;
+ if (!view) return 0;
- evas_object_del(view->main_menu);
+ if (view->main_menu) evas_object_del(view->main_menu);
view->main_menu_timer = NULL;
view->main_menu = NULL;
@@ -1100,6 +1109,7 @@ _evisum_ui_process_list_main_menu_timer_cb(void *data) {
static void
_evisum_ui_process_list_main_menu_dismissed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) {
Evisum_Ui_Process_List_View *view = data;
+ if (!view || !view->main_menu) return;
elm_ctxpopup_dismiss(view->main_menu);
if (view->main_menu_timer) _evisum_ui_process_list_main_menu_timer_cb(view);
@@ -1461,13 +1471,18 @@ _evisum_ui_process_list_win_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
evisum_ui_widget_exel_deferred_call_cancel(view->widget_exel);
if (view->search.timer) ecore_timer_del(view->search.timer);
+ if (view->resize_timer) ecore_timer_del(view->resize_timer);
+ if (view->main_menu_timer) ecore_timer_del(view->main_menu_timer);
+
+ if (view->menu) evas_object_del(view->menu);
+ if (view->main_menu) evas_object_del(view->main_menu);
if (view->thread) ecore_thread_cancel(view->thread);
if (view->thread) ecore_thread_wait(view->thread, 0.5);
- ecore_event_handler_del(view->handler);
- evisum_icon_cache_del(view->icon_cache);
+ if (view->handler) ecore_event_handler_del(view->handler);
+ if (view->icon_cache) evisum_icon_cache_del(view->icon_cache);
view->thread = NULL;
ui->proc.win = NULL;
@@ -1476,7 +1491,7 @@ _evisum_ui_process_list_win_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
if (view->widget_exel) evisum_ui_widget_exel_free(view->widget_exel);
- eina_hash_free(view->proc_usage_cache);
+ if (view->proc_usage_cache) eina_hash_free(view->proc_usage_cache);
free(view);
view = NULL;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.