procstats: Fix leak

This commit is contained in:
Alastair Poole 2021-03-07 19:22:17 +00:00
parent 9ab00c598b
commit 29ca5ff055
1 changed files with 23 additions and 6 deletions

View File

@ -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) _size_format(unsigned long long bytes)
{ {
const char *units = "BKMGTPEZY"; const char *units = "BKMGTPEZY";
char buf[1024];
unsigned long powi = 1; unsigned long powi = 1;
unsigned long long value; unsigned long long value;
unsigned int precision = 2, powj = 1; unsigned int precision = 2, powj = 1;
@ -201,13 +202,17 @@ _size_format(unsigned long long bytes)
if ((value / powi) < powj) break; if ((value / powi) < powj) break;
--precision; --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 static void
_proc_stats_item_display(Proc_Stats *item) _proc_stats_item_display(Proc_Stats *item)
{ {
Evas_Object *pb; Evas_Object *pb;
Eina_Strbuf *buf;
char *s;
double val = 0.0; double val = 0.0;
if (item->cpu_time_prev > item->cpu_time) 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; val = (item->cpu_time - item->cpu_time_prev) / _TIMER_FREQ;
elm_progressbar_value_set(pb, val / 100.0); 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"); pb = evas_object_data_get(item->obj_swallow, "pb_mem");
val = item->mem_size / (_mem_total / 100.0); val = item->mem_size / (_mem_total / 100.0);
elm_progressbar_value_set(pb, val / 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), s = _size_format(item->mem_size);
_size_format(_mem_total))); 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 static void