| drw: simplify drw_font_xcreate and prevent a potential unneeded allocation - dm… | |
| git clone git://git.suckless.org/dmenu | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit e2e7fcb2198d40e2a50591932ee2b2a8f9969a5f | |
| parent 1f2226df1380f178240bb81dddcad6c5ff2e9d62 | |
| Author: Hiltjo Posthuma <[email protected]> | |
| Date: Tue, 20 Oct 2015 22:55:39 +0200 | |
| drw: simplify drw_font_xcreate and prevent a potential unneeded allocation | |
| Diffstat: | |
| M drw.c | 41 ++++++++++++++---------------… | |
| 1 file changed, 19 insertions(+), 22 deletions(-) | |
| --- | |
| diff --git a/drw.c b/drw.c | |
| @@ -108,12 +108,8 @@ static Fnt * | |
| drw_font_xcreate(Drw *drw, const char *fontname, FcPattern *fontpattern) | |
| { | |
| Fnt *font; | |
| - | |
| - if (!(fontname || fontpattern)) | |
| - die("No font specified.\n"); | |
| - | |
| - if (!(font = calloc(1, sizeof(Fnt)))) | |
| - return NULL; | |
| + XftFont *xfont = NULL; | |
| + FcPattern *pattern = NULL; | |
| if (fontname) { | |
| /* Using the pattern found at font->xfont->pattern does not yi… | |
| @@ -122,28 +118,29 @@ drw_font_xcreate(Drw *drw, const char *fontname, FcPatter… | |
| * behaviour whereas the former just results in | |
| * missing-character-rectangles being drawn, at least with som… | |
| */ | |
| - if (!(font->xfont = XftFontOpenName(drw->dpy, drw->screen, fon… | |
| - !(font->pattern = FcNameParse((FcChar8 *) fontname))) { | |
| - if (font->xfont) { | |
| - XftFontClose(drw->dpy, font->xfont); | |
| - font->xfont = NULL; | |
| - } | |
| + if (!(xfont = XftFontOpenName(drw->dpy, drw->screen, fontname)… | |
| + fprintf(stderr, "error, cannot load font: '%s'\n", fon… | |
| + return NULL; | |
| + } | |
| + if (!(pattern = FcNameParse((FcChar8 *) fontname))) { | |
| fprintf(stderr, "error, cannot load font: '%s'\n", fon… | |
| + XftFontClose(drw->dpy, xfont); | |
| + return NULL; | |
| } | |
| } else if (fontpattern) { | |
| - if (!(font->xfont = XftFontOpenPattern(drw->dpy, fontpattern))) | |
| + if (!(xfont = XftFontOpenPattern(drw->dpy, fontpattern))) { | |
| fprintf(stderr, "error, cannot load font pattern.\n"); | |
| - else | |
| - font->pattern = NULL; | |
| - } | |
| - | |
| - if (!font->xfont) { | |
| - free(font); | |
| - return NULL; | |
| + return NULL; | |
| + } | |
| + } else { | |
| + die("no font specified.\n"); | |
| } | |
| - font->ascent = font->xfont->ascent; | |
| - font->descent = font->xfont->descent; | |
| + font = ecalloc(1, sizeof(Fnt)); | |
| + font->xfont = xfont; | |
| + font->pattern = pattern; | |
| + font->ascent = xfont->ascent; | |
| + font->descent = xfont->descent; | |
| font->h = font->ascent + font->descent; | |
| font->dpy = drw->dpy; | |