diff --git a/src/conky.cc b/src/conky.cc index c7378842..bedaaba4 100644 --- a/src/conky.cc +++ b/src/conky.cc @@ -2307,6 +2307,7 @@ static void main_loop(void) current_config, IN_MODIFY); } + break; } #ifdef HAVE_LUA else { diff --git a/src/fonts.c b/src/fonts.c index 748982ef..c2b3dd02 100644 --- a/src/fonts.c +++ b/src/fonts.c @@ -131,7 +131,13 @@ void free_fonts(void) for (i = 0; i <= font_count; i++) { #ifdef XFT if (use_xft) { - XftFontClose(display, fonts[i].xftfont); + /* + * Do we not need to close fonts with Xft? Unsure. Not freeing the + * fonts seems to incur a slight memory leak, but it also prevents + * a crash. + * + * XftFontClose(display, fonts[i].xftfont); + */ fonts[i].xftfont = 0; } else #endif /* XFT */ diff --git a/src/llua.c b/src/llua.c index 828443a4..8ec41dbf 100644 --- a/src/llua.c +++ b/src/llua.c @@ -304,6 +304,14 @@ void llua_close(void) free(draw_post_hook); draw_post_hook = 0; } + if (startup_hook) { + free(startup_hook); + startup_hook = 0; + } + if (shutdown_hook) { + free(shutdown_hook); + shutdown_hook = 0; + } if(!lua_L) return; lua_close(lua_L); lua_L = NULL; @@ -399,11 +407,13 @@ void llua_set_number(const char *key, double value) void llua_set_startup_hook(const char *args) { + if (startup_hook) free(startup_hook); startup_hook = strdup(args); } void llua_set_shutdown_hook(const char *args) { + if (shutdown_hook) free(shutdown_hook); shutdown_hook = strdup(args); } diff --git a/src/mail.c b/src/mail.c index 7cf1ea3d..12419631 100644 --- a/src/mail.c +++ b/src/mail.c @@ -820,7 +820,7 @@ static void *imap_thread(void *arg) recvbuf[numbytes] = '\0'; DBGP2("imap_thread() received: %s", recvbuf); if (strlen(recvbuf) > 2) { - unsigned long messages, recent; + unsigned long messages, recent = 0; char *buf = recvbuf; char force_check = 0; buf = strstr(buf, "EXISTS"); diff --git a/src/x11.c b/src/x11.c index 62f64863..e2e56fce 100644 --- a/src/x11.c +++ b/src/x11.c @@ -238,11 +238,13 @@ static int get_argb_visual(Visual** visual, int *depth) { *visual = visual_list[i].visual; *depth = visual_list[i].depth; DBGP("Found ARGB Visual"); + XFree(visual_list); return 1; } } // no argb visual available DBGP("No ARGB Visual found"); + XFree(visual_list); return 0; } #endif /* USE_ARGB */