mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-03 16:46:18 +00:00 
			
		
		
		
	Do not use evbuffer_add_buffer because it is destructive and doesn't
work in newer libevent.
This commit is contained in:
		
							
								
								
									
										25
									
								
								input.c
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								input.c
									
									
									
									
									
								
							@@ -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). */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user