---
 drw.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drw.c b/drw.c
index 0adf33e..80383c9 100644
--- a/drw.c
+++ b/drw.c
@@ -63,9 +63,8 @@ utf8decode(const char *c, long *u, size_t clen)
 Drw *
 drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int 
h)
 {
-       Drw *drw;
+       Drw *drw = ecalloc(1, sizeof(Drw));
 
-       drw = ecalloc(1, sizeof(Drw));
        drw->dpy = dpy;
        drw->screen = screen;
        drw->root = root;
@@ -81,6 +80,9 @@ drw_create(Display *dpy, int screen, Window root, unsigned 
int w, unsigned int h
 void
 drw_resize(Drw *drw, unsigned int w, unsigned int h)
 {
+       if (!drw)
+               return;
+
        drw->w = w;
        drw->h = h;
        if (drw->drawable)
@@ -365,6 +367,9 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned 
int h, const char *tex
 void
 drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h)
 {
+       if (!drw)
+               return;
+
        XCopyArea(drw->dpy, drw->drawable, win, drw->gc, x, y, w, h, x, y);
        XSync(drw->dpy, False);
 }
@@ -397,7 +402,9 @@ drw_cur_create(Drw *drw, int shape)
 {
        Cur *cur;
 
-       cur = ecalloc(1, sizeof(Cur));
+       if (!drw || !(cur = ecalloc(1, sizeof(Cur))))
+               return NULL;
+
        cur->cursor = XCreateFontCursor(drw->dpy, shape);
 
        return cur;
@@ -408,6 +415,7 @@ drw_cur_free(Drw *drw, Cur *cursor)
 {
        if (!cursor)
                return;
+
        XFreeCursor(drw->dpy, cursor->cursor);
        free(cursor);
 }
-- 
2.7.3


Reply via email to