Don Heap spotted that our heuristics for dealing with IPv6 literal addresses
[u/mdw/putty] / terminal.c
index d712fc9..311df18 100644 (file)
@@ -1535,6 +1535,11 @@ void term_size(Terminal *term, int newrows, int newcols, int newsavelines)
        newsavelines == term->savelines)
        return;                        /* nothing to do */
 
+    /* Behave sensibly if we're given zero (or negative) rows/cols */
+
+    if (newrows < 1) newrows = 1;
+    if (newcols < 1) newcols = 1;
+
     deselect(term);
     swap_screen(term, 0, FALSE, FALSE);
 
@@ -2748,7 +2753,7 @@ static void term_out(Terminal *term)
                     * Perform an actual beep if we're not overloaded.
                     */
                    if (!term->cfg.bellovl || !term->beep_overloaded) {
-                       beep(term->frontend, term->cfg.beep);
+                       do_beep(term->frontend, term->cfg.beep);
 
                        if (term->cfg.beep == BELL_VISUAL) {
                            term_schedule_vbell(term, FALSE, 0);
@@ -6396,6 +6401,7 @@ int term_get_userpass_input(Terminal *term, prompts_t *p,
                /* Immediate abort. */
                term_data(term, 0, "\r\n", 2);
                sfree(s);
+               p->data = NULL;
                return 0; /* user abort */
              default:
                /*
@@ -6421,6 +6427,7 @@ int term_get_userpass_input(Terminal *term, prompts_t *p,
        return -1; /* more data required */
     } else {
        sfree(s);
+       p->data = NULL;
        return +1; /* all done */
     }
 }