diff options
author | Alastair Poole <netstar@gmail.com> | 2021-03-07 19:22:17 +0000 |
---|---|---|
committer | Alastair Poole <netstar@gmail.com> | 2021-03-07 19:22:49 +0000 |
commit | 29ca5ff055169093db83a98fc006e581fecbe4ae (patch) | |
tree | 371d5a238bb2d94d207db4c13155dff2726c4e20 | |
parent | 9ab00c598b34b76475ec1b06d0c7b79b9e87310c (diff) | |
download | enlightenment-29ca5ff055169093db83a98fc006e581fecbe4ae.tar.gz |
procstats: Fix leak
-rw-r--r-- | src/modules/procstats/e_mod_main.c | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/modules/procstats/e_mod_main.c b/src/modules/procstats/e_mod_main.c index f5221af52f..99009eec61 100644 --- a/src/modules/procstats/e_mod_main.c +++ b/src/modules/procstats/e_mod_main.c @@ -178,10 +178,11 @@ _proc_stats_item_children_update(Eina_List *children, Proc_Stats *item) } } -static const char * +static char * _size_format(unsigned long long bytes) { const char *units = "BKMGTPEZY"; + char buf[1024]; unsigned long powi = 1; unsigned long long value; unsigned int precision = 2, powj = 1; @@ -201,13 +202,17 @@ _size_format(unsigned long long bytes) if ((value / powi) < powj) break; --precision; } - return eina_slstr_printf("%1.*f%c", precision, (double) value / powi, *units); + snprintf(buf, sizeof(buf), "%1.*f%c", precision, (double) value / powi, *units); + + return strdup(buf); } static void _proc_stats_item_display(Proc_Stats *item) { Evas_Object *pb; + Eina_Strbuf *buf; + char *s; double val = 0.0; if (item->cpu_time_prev > item->cpu_time) @@ -219,14 +224,26 @@ _proc_stats_item_display(Proc_Stats *item) val = (item->cpu_time - item->cpu_time_prev) / _TIMER_FREQ; elm_progressbar_value_set(pb, val / 100.0); - elm_object_part_text_set(pb, "elm.text.status", eina_slstr_printf("%1.0f %%", val)); + + buf = eina_strbuf_new(); + + eina_strbuf_append_printf(buf, "%1.0f %%", val); + elm_object_part_text_set(pb, "elm.text.status", eina_strbuf_string_get(buf)); + eina_strbuf_reset(buf); pb = evas_object_data_get(item->obj_swallow, "pb_mem"); val = item->mem_size / (_mem_total / 100.0); elm_progressbar_value_set(pb, val / 100.0); - elm_object_part_text_set(pb, "elm.text.status", - eina_slstr_printf("%s/%s", _size_format(item->mem_size), - _size_format(_mem_total))); + + s = _size_format(item->mem_size); + eina_strbuf_append_printf(buf, "%s/", s); + free(s); + s = _size_format(_mem_total); + eina_strbuf_append(buf, s); + free(s); + + elm_object_part_text_set(pb, "elm.text.status", eina_strbuf_string_get(buf)); + eina_strbuf_free(buf); } static void |