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.

Reply via email to