Fix unexpected network error 5000
[u/mdw/putty] / terminal.c
index 2c41145..f4669df 100644 (file)
@@ -665,7 +665,7 @@ void term_out(void) {
                    if (insert)
                        insch (1);
                    check_selection (cpos, cpos+1);
-                   *cpos++ = c | curr_attr | 
+                   *cpos++ = xlat_tty2scr((unsigned char)c) | curr_attr |
                        (c <= 0x7F ? cset_attr[cset] : ATTR_ASCII);
                    curs_x++;
                    if (curs_x == cols) {
@@ -929,12 +929,12 @@ void term_out(void) {
                }
                break;
              case 'r':                /* set scroll margins */
-               if (esc_nargs <= 2) {
+               if (!esc_query && esc_nargs <= 2) {
                    int top, bot;
                    top = def(esc_args[0], 1) - 1;
                    if (top < 0)
                        top = 0;
-                   bot = (esc_nargs == 1 ? rows :
+                   bot = (esc_nargs <= 1 || esc_args[1] == 0 ? rows :
                           def(esc_args[1], rows)) - 1;
                    if (bot >= rows)
                        bot = rows-1;
@@ -1436,7 +1436,17 @@ void term_mouse (Mouse_Button b, Mouse_Action a, int x, int y) {
                       !(p <= data+len-sizeof(sel_nl) &&
                         !memcmp(p, sel_nl, sizeof(sel_nl))))
                    p++;
-               back->send (q, p-q);
+
+               {
+                   int i;
+                   unsigned char c;
+                   for(i=0;i<p-q;i++)
+                   {
+                       c=xlat_kbd2tty(q[i]);
+                       back->send(&c,1);
+                   }
+               }
+
                if (p <= data+len-sizeof(sel_nl) &&
                    !memcmp(p, sel_nl, sizeof(sel_nl))) {
                    back->send ("\r", 1);