Memory leak fixes reported by Balazs Domjan.
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Thu, 30 Aug 2012 18:48:08 +0000 (18:48 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Thu, 30 Aug 2012 18:48:08 +0000 (18:48 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/putty@9645 cda61777-01e9-0310-a592-d414129be87e

terminal.c

index ed3563d..cc4b0d8 100644 (file)
@@ -1619,10 +1619,14 @@ void term_free(Terminal *term)
     for (i = 0; i < term->bidi_cache_size; i++) {
        sfree(term->pre_bidi_cache[i].chars);
        sfree(term->post_bidi_cache[i].chars);
+        sfree(term->post_bidi_cache[i].forward);
+        sfree(term->post_bidi_cache[i].backward);
     }
     sfree(term->pre_bidi_cache);
     sfree(term->post_bidi_cache);
 
+    sfree(term->tabs);
+
     expire_timer_context(term);
 
     conf_free(term->conf);
@@ -1711,7 +1715,8 @@ void term_size(Terminal *term, int newrows, int newcols, int newsavelines)
     while (term->rows > newrows) {
        if (term->curs.y < term->rows - 1) {
            /* delete bottom row, unless it contains the cursor */
-           sfree(delpos234(term->screen, term->rows - 1));
+            line = delpos234(term->screen, term->rows - 1);
+            freeline(line);
        } else {
            /* push top row to scrollback */
            line = delpos234(term->screen, 0);