# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit e3671006dba1c21316c570e11d6688f5513fb44e
    parent 426887ccec8577ee33d1fb44f258d6a70a2eddf1
    Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
    Date:   Mon, 17 Sep 2012 22:11:20 +0200

    Add xcalloc wrapper

    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(-)
    Diffstat:
    Mst.c | 13+++++++++++--

    1 file changed, 11 insertions(+), 2 deletions(-)
    diff --git 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;