mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-03 16:46:18 +00:00 
			
		
		
		
	Fix memory leaks with paste_replace, based on changes from J Raynor.
This commit is contained in:
		@@ -169,6 +169,7 @@ cmd_load_buffer_callback(struct client *c, int closed, void *data)
 | 
			
		||||
		/* No context so can't use server_client_msg_error. */
 | 
			
		||||
		evbuffer_add_printf(c->stderr_data, "no buffer %d\n", *buffer);
 | 
			
		||||
		server_push_stderr(c);
 | 
			
		||||
		free(pdata);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	free(data);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								paste.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								paste.c
									
									
									
									
									
								
							@@ -131,8 +131,10 @@ paste_replace(struct paste_stack *ps, u_int idx, char *data, size_t size)
 | 
			
		||||
{
 | 
			
		||||
	struct paste_buffer	*pb;
 | 
			
		||||
 | 
			
		||||
	if (size == 0)
 | 
			
		||||
	if (size == 0) {
 | 
			
		||||
		free(data);
 | 
			
		||||
		return (0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (idx >= ARRAY_LENGTH(ps))
 | 
			
		||||
		return (-1);
 | 
			
		||||
 
 | 
			
		||||
@@ -1455,8 +1455,8 @@ window_copy_copy_buffer(struct window_pane *wp, int idx, void *buf, size_t len)
 | 
			
		||||
	if (idx == -1) {
 | 
			
		||||
		limit = options_get_number(&global_options, "buffer-limit");
 | 
			
		||||
		paste_add(&global_buffers, buf, len, limit);
 | 
			
		||||
	} else
 | 
			
		||||
		paste_replace(&global_buffers, idx, buf, len);
 | 
			
		||||
	} else if (paste_replace(&global_buffers, idx, buf, len) != 0)
 | 
			
		||||
		free(buf);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user