fix backscroll reconfig segv
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 18 Jun 2012 11:18:46 +0000 (11:18 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 18 Jun 2012 11:18:46 +0000 (11:18 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/terminology@72384 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/bin/termpty.c

index 83b0a4f..b28aa2a 100644 (file)
@@ -44,6 +44,7 @@ _text_save_top(Termpty *ty)
 {
    Termsave *ts;
 
+   if (ty->backmax <= 0) return;
    ts = malloc(sizeof(Termsave) + ((ty->w - 1) * sizeof(Termcell)));
    ts->w = ty->w;
    _text_copy(ty, ty->screen, ts->cell, ty->w);
@@ -1608,7 +1609,10 @@ termpty_backscroll_set(Termpty *ty, int size)
           }
         free(ty->back);
      }
-   ty->back = calloc(1, sizeof(Termsave *) * ty->backmax);
+   if (size > 0)
+     ty->back = calloc(1, sizeof(Termsave *) * size);
+   else
+     ty->back = NULL;
    ty->backscroll_num = 0;
    ty->backpos = 0;
    ty->backmax = size;