|
@@ -124,7 +124,12 @@ con3270_create_status(struct con3270 *cp)
|
|
static void
|
|
static void
|
|
con3270_update_string(struct con3270 *cp, struct string *s, int nr)
|
|
con3270_update_string(struct con3270 *cp, struct string *s, int nr)
|
|
{
|
|
{
|
|
- if (s->len >= cp->view.cols - 5)
|
|
|
|
|
|
+ if (s->len < 4) {
|
|
|
|
+ /* This indicates a bug, but printing a warning would
|
|
|
|
+ * cause a deadlock. */
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (s->string[s->len - 4] != TO_RA)
|
|
return;
|
|
return;
|
|
raw3270_buffer_address(cp->view.dev, s->string + s->len - 3,
|
|
raw3270_buffer_address(cp->view.dev, s->string + s->len - 3,
|
|
cp->view.cols * (nr + 1));
|
|
cp->view.cols * (nr + 1));
|
|
@@ -460,7 +465,7 @@ con3270_cline_end(struct con3270 *cp)
|
|
cp->cline->len + 4 : cp->view.cols;
|
|
cp->cline->len + 4 : cp->view.cols;
|
|
s = con3270_alloc_string(cp, size);
|
|
s = con3270_alloc_string(cp, size);
|
|
memcpy(s->string, cp->cline->string, cp->cline->len);
|
|
memcpy(s->string, cp->cline->string, cp->cline->len);
|
|
- if (s->len < cp->view.cols - 5) {
|
|
|
|
|
|
+ if (cp->cline->len < cp->view.cols - 5) {
|
|
s->string[s->len - 4] = TO_RA;
|
|
s->string[s->len - 4] = TO_RA;
|
|
s->string[s->len - 1] = 0;
|
|
s->string[s->len - 1] = 0;
|
|
} else {
|
|
} else {
|