# st

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

| Log | Files | Refs | README | LICENSE

    commit 4db3df312ada9d92564d5580fb4e67f7704efff8
    parent e8c13ebe8001a7870a70b698d8b8fa80b7c90fd3
    Author: Aurélien Aptel <aurelien.aptel@gmail.com>
    Date:   Thu, 26 Aug 2010 21:37:12 +0200

    faster resizing.

    Diffstat:
    Mst.c | 21+++++++++------------

    1 file changed, 9 insertions(+), 12 deletions(-)
    diff --git a/st.c b/st.c
    @@ -1001,23 +1001,21 @@ tputs(char *s, int len) {
     void
     tresize(int col, int row) {
     	int i;
    -	Line *line;
     	int minrow = MIN(row, term.row);
     	int mincol = MIN(col, term.col);

     	if(col < 1 || row < 1)
     		return;
    -	/* alloc */
    -	line = calloc(row, sizeof(Line));
    -	for(i = 0 ; i < row; i++)
    -		line[i] = calloc(col, sizeof(Glyph));
    -	/* copy */
    -	for(i = 0 ; i < minrow; i++)
    -		memcpy(line[i], term.line[i], mincol * sizeof(Glyph));
    -	/* free */
    -	for(i = 0; i < term.row; i++)
    +
    +	for(i = row; i < term.row; i++)
     		free(term.line[i]);
    -	free(term.line);
    +	term.line = realloc(term.line, row * sizeof(Line));
    +	for(i = 0; i < minrow; i++) {
    +		term.line[i] = realloc(term.line[i], col * sizeof(Glyph));
    +		memset(term.line[i] + mincol, 0, (col - mincol) * sizeof(Glyph));
    +	}
    +	for(/* i == minrow */; i < row; i++)
    +		term.line[i] = calloc(col, sizeof(Glyph));

     	LIMIT(term.c.x, 0, col-1);
     	LIMIT(term.c.y, 0, row-1);
    @@ -1025,7 +1023,6 @@ tresize(int col, int row) {
     	LIMIT(term.bot, 0, row-1);

     	term.bot = row-1;
    -	term.line = line;
     	term.col = col, term.row = row;
     }