}
break;
} else if (ch == ';') {
+ vt->esc_has_par = 1;
vt->esc_count++;
break;
} else {
if (vt->esc_buf[0] == 0) {
vt->esc_buf[0] = 1;
}
- vt->cy -= vt->esc_buf[0];
- if (vt->cy < 0) {
- vt->cy = 0;
- }
+ vncterm_gotoxy (vt, vt->cx, vt->cy - vt->esc_buf[0]);
break;
case 'B':
case 'e':
if (vt->esc_buf[0] == 0) {
vt->esc_buf[0] = 1;
}
- vt->cy += vt->esc_buf[0];
- if (vt->cy >= vt->height) {
- vt->cy = vt->height - 1;
- }
+ vncterm_gotoxy (vt, vt->cx, vt->cy + vt->esc_buf[0]);
break;
case 'C':
case 'a':
if (vt->esc_buf[0] == 0) {
vt->esc_buf[0] = 1;
}
- vt->cx += vt->esc_buf[0];
- if (vt->cx >= vt->width) {
- vt->cx = vt->width - 1;
- }
+ vncterm_gotoxy (vt, vt->cx + vt->esc_buf[0], vt->cy);
break;
case 'D':
/* move cursor left */
if (vt->esc_buf[0] == 0) {
vt->esc_buf[0] = 1;
}
- vt->cx -= vt->esc_buf[0];
- if (vt->cx < 0) {
- vt->cx = 0;
- }
+ vncterm_gotoxy (vt, vt->cx - vt->esc_buf[0], vt->cy);
break;
case 'G':
case '`':
vt->utf_char = (vt->utf_char << 6) | (c & 0x3f);
vt->utf_count--;
if (vt->utf_count == 0) {
- tc = vt->utf_char;
+ if (vt->utf_char <= USHRT_MAX) {
+ tc = vt->utf_char;
+ } else {
+ tc = 0;
+ }
} else {
continue;
}