Do not use evbuffer_add_buffer because it is destructive and doesn't

work in newer libevent.
This commit is contained in:
nicm
2019-05-07 10:25:15 +00:00
parent 45ae9a8e35
commit 69440d19b7
5 changed files with 24 additions and 25 deletions

25
input.c
View File

@ -873,19 +873,28 @@ input_set_state(struct window_pane *wp, const struct input_transition *itr)
/* Parse input. */
void
input_parse(struct window_pane *wp)
{
struct evbuffer *evb = wp->event->input;
input_parse_buffer(wp, EVBUFFER_DATA(evb), EVBUFFER_LENGTH(evb));
evbuffer_drain(evb, EVBUFFER_LENGTH(evb));
}
/* Parse given input. */
void
input_parse_buffer(struct window_pane *wp, u_char *buf, size_t len)
{
struct input_ctx *ictx = wp->ictx;
struct screen_write_ctx *sctx = &ictx->ctx;
const struct input_transition *itr;
struct evbuffer *evb = wp->event->input;
u_char *buf;
size_t len, off;
size_t off = 0;
if (EVBUFFER_LENGTH(evb) == 0)
if (len == 0)
return;
window_update_activity(wp->window);
wp->flags |= PANE_CHANGED;
notify_input(wp, buf, len);
/*
* Open the screen. Use NULL wp if there is a mode set as don't want to
@ -897,12 +906,6 @@ input_parse(struct window_pane *wp)
screen_write_start(sctx, NULL, &wp->base);
ictx->wp = wp;
buf = EVBUFFER_DATA(evb);
len = EVBUFFER_LENGTH(evb);
off = 0;
notify_input(wp, evb);
log_debug("%s: %%%u %s, %zu bytes: %.*s", __func__, wp->id,
ictx->state->name, len, (int)len, buf);
@ -950,8 +953,6 @@ input_parse(struct window_pane *wp)
/* Close the screen. */
screen_write_stop(sctx);
evbuffer_drain(evb, len);
}
/* Split the parameter list (if any). */