Krolyxon
Commit d9e60cb

Branches

Refs →

nsxivd9e60cb

Fix memory leak in win_res()

Fixes issue #372.
Author
Bert Münnich
Date
2020-01-16 11:13 +0100
Committer
Bert Münnich · 2020-01-16 12:36 +0100
Parent
55777ba
Commit
d9e60cb4c0cf7433b9c163c083899565aab88c4d

+13 −11

1 file changed

  1. M window.c +13 −11
M window.c View
@@ -71,18 +71,14 @@ void win_alloc_color(const win_env_t *e, const char *name, XftColor *col)
7171 }
7272 }
7373
74−const char* win_res(Display *dpy, const char *name, const char *def)
74+const char* win_res(XrmDatabase db, const char *name, const char *def)
7575 {
7676 char *type;
7777 XrmValue ret;
78− XrmDatabase db;
79− char *res_man;
80−
81− XrmInitialize();
8278
83− if ((res_man = XResourceManagerString(dpy)) != NULL &&
84− (db = XrmGetStringDatabase(res_man)) != NULL &&
85− XrmGetResource(db, name, name, &type, &ret) && STREQ(type, "String"))
79+ if (db != None &&
80+ XrmGetResource(db, name, name, &type, &ret) &&
81+ STREQ(type, "String"))
8682 {
8783 return ret.addr;
8884 } else {
@@ -97,6 +93,8 @@ void win_init(win_t *win)
9793 {
9894 win_env_t *e;
9995 const char *bg, *fg, *f;
96+ char *res_man;
97+ XrmDatabase db;
10098
10199 memset(win, 0, sizeof(win_t));
102100
@@ -114,11 +112,15 @@ void win_init(win_t *win)
114112 if (setlocale(LC_CTYPE, "") == NULL || XSupportsLocale() == 0)
115113 error(0, 0, "No locale support");
116114
117− f = win_res(e->dpy, RES_CLASS ".font", "monospace-8");
115+ XrmInitialize();
116+ res_man = XResourceManagerString(e->dpy);
117+ db = res_man != NULL ? XrmGetStringDatabase(res_man) : None;
118+
119+ f = win_res(db, RES_CLASS ".font", "monospace-8");
118120 win_init_font(e, f);
119121
120− bg = win_res(e->dpy, RES_CLASS ".background", "white");
121− fg = win_res(e->dpy, RES_CLASS ".foreground", "black");
122+ bg = win_res(db, RES_CLASS ".background", "white");
123+ fg = win_res(db, RES_CLASS ".foreground", "black");
122124 win_alloc_color(e, bg, &win->bg);
123125 win_alloc_color(e, fg, &win->fg);
124126