netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=19f7d5cf0bcfc3563b69c001eb6f45b8d04c2d9e

commit 19f7d5cf0bcfc3563b69c001eb6f45b8d04c2d9e
Author: Alastair Poole <nets...@gmail.com>
Date:   Sat Sep 12 14:31:01 2020 +0100

    proc_view: defense
---
 src/bin/ui/ui_process_view.c | 43 +++++++++++++++++++++----------------------
 1 file changed, 21 insertions(+), 22 deletions(-)

diff --git a/src/bin/ui/ui_process_view.c b/src/bin/ui/ui_process_view.c
index cb7b513..8fd6765 100644
--- a/src/bin/ui/ui_process_view.c
+++ b/src/bin/ui/ui_process_view.c
@@ -326,12 +326,17 @@ _thread_info_set(Ui_Process *ui, Proc_Info *proc)
 
    EINA_LIST_FREE(threads, t)
      {
-        Thread_Info *prev = elm_object_item_data_get(it);
-        if (prev)
-          _item_del(prev, NULL);
-        elm_object_item_data_set(it, t);
-        elm_genlist_item_update(it);
-        it = elm_genlist_item_next_get(it);
+       if (!it)
+          _item_del(t, NULL);
+       else
+          {
+             Thread_Info *prev = elm_object_item_data_get(it);
+             if (prev)
+              _item_del(prev, NULL);
+             elm_object_item_data_set(it, t);
+             elm_genlist_item_update(it);
+             it = elm_genlist_item_next_get(it);
+          }
      }
    eina_lock_release(&_lock);
 }
@@ -929,7 +934,7 @@ _btn_info_clicked_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
                      void *event_info EINA_UNUSED)
 {
    Ui_Process *ui;
-   char *cmd, *t;
+   Eina_List *lines = NULL;
 
    ui = data;
 
@@ -938,16 +943,16 @@ _btn_info_clicked_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
 
    if (ui->info_init) return;
 
-   cmd = t = strdup(ui->selected_cmd);
-   while (!isspace(*t)) t++;
-   if (isspace(*t)) *t = '\0';
-
-   Eina_List *lines =
-          _exe_response(eina_slstr_printf("man %s | col -b", cmd));
-
-   free(cmd);
+   if (ui->selected_cmd && ui->selected_cmd[0] && !strchr(ui->selected_cmd, ' 
'))
+     lines =_exe_response(eina_slstr_printf("man %s | col -b", 
ui->selected_cmd));
 
-   if (lines)
+   if (!lines)
+     {
+        elm_object_text_set(ui->entry_info,
+                        eina_slstr_printf(_("No documentation found for %s."),
+                        ui->selected_cmd));
+     }
+   else
      {
         char *line;
         int n = 1;
@@ -966,12 +971,6 @@ _btn_info_clicked_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
         elm_object_text_set(ui->entry_info, eina_strbuf_string_get(buf));
         eina_strbuf_free(buf);
      }
-   else
-     {
-        elm_object_text_set(ui->entry_info,
-                        eina_slstr_printf(_("No documentation found for %s."),
-                        ui->selected_cmd));
-     }
 
    ui->info_init = EINA_TRUE;
 }

-- 


Reply via email to