return obj;
}
-static void free_text_objects(struct text_object_list *text_object_list)
+/*
+ * call with full == 0 when freeing after 'internal' evaluation of objects
+ */
+static void free_text_objects(struct text_object_list *text_object_list, char full)
{
unsigned int i;
struct text_object *obj;
case OBJ_mpd_file:
case OBJ_mpd_percent:
case OBJ_mpd_smart:
- free_mpd_vars(&info.mpd);
+ if (full) {
+ free_mpd_vars(&info.mpd);
+ }
break;
#endif
case OBJ_scroll:
static void extract_variable_text(const char *p)
{
- free_text_objects(global_text_object_list);
+ free_text_objects(global_text_object_list, 1);
free(global_text_object_list);
if (tmpstring1) {
free(tmpstring1);
memcpy(tmp_info, cur, sizeof(struct information));
text_objects = parse_conky_vars(p, p, tmp_info);
- free_text_objects(text_objects);
+ free_text_objects(text_objects, 0);
free(text_objects);
free(tmp_info);
}
text_objects = parse_conky_vars(obj->data.execi.buffer, p, tmp_info);
obj->data.execi.last_update = current_update_time;
}
- free_text_objects(text_objects);
+ free_text_objects(text_objects, 0);
free(text_objects);
free(tmp_info);
}
if_jumped = 0;
}
p[0] = '\0';
- free_text_objects(text_objects);
+ free_text_objects(text_objects, 0);
free(text_objects);
free(tmp_info);
}
free_fonts();
#endif /* X11 */
- free_text_objects(global_text_object_list);
+ free_text_objects(global_text_object_list, 1);
free(global_text_object_list);
global_text_object_list = NULL;
if (tmpstring1) {