Add xcalloc wrapper
authorRoberto E. Vargas Caballero <k0ga@shike2.com>
Mon, 17 Sep 2012 20:11:20 +0000 (22:11 +0200)
committerRoberto E. Vargas Caballero <k0ga@shike2.com>
Mon, 17 Sep 2012 20:11:20 +0000 (22:11 +0200)
malloc and realloc are called through xmalloc and xrealloc, so calloc should
be called through xcalloc.
---
 st.c |   13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

st.c

diff --git a/st.c b/st.c
index d5ecf61..df7f8d8 100644 (file)
--- a/st.c
+++ b/st.c
@@ -324,6 +324,7 @@ static int isfullutf8(char *, int);
 
 static void *xmalloc(size_t);
 static void *xrealloc(void *, size_t);
+static void *xcalloc(size_t nmemb, size_t size);
 
 static void (*handler[LASTEvent])(XEvent *) = {
        [KeyPress] = kpress,
@@ -373,6 +374,14 @@ xrealloc(void *p, size_t len) {
        return p;
 }
 
+void *
+xcalloc(size_t nmemb, size_t size) {
+       void *p = calloc(nmemb, size);
+       if(!p)
+               die("Out of memory\n");
+       return p;
+}
+
 int
 utf8decode(char *s, long *u) {
        uchar c;
@@ -1801,8 +1810,8 @@ tresize(int col, int row) {
        /* allocate any new rows */
        for(/* i == minrow */; i < row; i++) {
                term.dirty[i] = 1;
-               term.line[i] = calloc(col, sizeof(Glyph));
-               term.alt [i] = calloc(col, sizeof(Glyph));
+               term.line[i] = xcalloc(col, sizeof(Glyph));
+               term.alt [i] = xcalloc(col, sizeof(Glyph));
        }
        if(col > term.col) {
                bool *bp = term.tabs + term.col;