mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-03 16:46:18 +00:00 
			
		
		
		
	Add xreallocarray and remove nmemb argument from xrealloc.
This commit is contained in:
		
							
								
								
									
										4
									
								
								array.h
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								array.h
									
									
									
									
									
								
							@@ -39,10 +39,10 @@
 | 
				
			|||||||
		fatalx("size too big");					\
 | 
							fatalx("size too big");					\
 | 
				
			||||||
	if ((a)->space == 0) {						\
 | 
						if ((a)->space == 0) {						\
 | 
				
			||||||
	       	(a)->space = ARRAY_INITIALSPACE(a);			\
 | 
						       	(a)->space = ARRAY_INITIALSPACE(a);			\
 | 
				
			||||||
		(a)->list = xrealloc((a)->list, 1, (a)->space);		\
 | 
							(a)->list = xrealloc((a)->list, (a)->space);		\
 | 
				
			||||||
	}								\
 | 
						}								\
 | 
				
			||||||
	while ((a)->space <= ((a)->num + (n)) * ARRAY_ITEMSIZE(a)) {	\
 | 
						while ((a)->space <= ((a)->num + (n)) * ARRAY_ITEMSIZE(a)) {	\
 | 
				
			||||||
		(a)->list = xrealloc((a)->list, 2, (a)->space);		\
 | 
							(a)->list = xreallocarray((a)->list, 2, (a)->space);	\
 | 
				
			||||||
		(a)->space *= 2;					\
 | 
							(a)->space *= 2;					\
 | 
				
			||||||
	}								\
 | 
						}								\
 | 
				
			||||||
} while (0)
 | 
					} while (0)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,7 +48,7 @@ const struct cmd_entry cmd_capture_pane_entry = {
 | 
				
			|||||||
char *
 | 
					char *
 | 
				
			||||||
cmd_capture_pane_append(char *buf, size_t *len, char *line, size_t linelen)
 | 
					cmd_capture_pane_append(char *buf, size_t *len, char *line, size_t linelen)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	buf = xrealloc(buf, 1, *len + linelen + 1);
 | 
						buf = xrealloc(buf, *len + linelen + 1);
 | 
				
			||||||
	memcpy(buf + *len, line, linelen);
 | 
						memcpy(buf + *len, line, linelen);
 | 
				
			||||||
	*len += linelen;
 | 
						*len += linelen;
 | 
				
			||||||
	return (buf);
 | 
						return (buf);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -147,7 +147,7 @@ do_print:
 | 
				
			|||||||
			size = pb->size - used;
 | 
								size = pb->size - used;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		msglen = size * 4 + 1;
 | 
							msglen = size * 4 + 1;
 | 
				
			||||||
		msg = xrealloc(msg, 1, msglen);
 | 
							msg = xrealloc(msg, msglen);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		strvisx(msg, start, size, VIS_OCTAL|VIS_TAB);
 | 
							strvisx(msg, start, size, VIS_OCTAL|VIS_TAB);
 | 
				
			||||||
		cmdq_print(cmdq, "%s", msg);
 | 
							cmdq_print(cmdq, "%s", msg);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -104,7 +104,7 @@ cmd_set_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
 | 
				
			|||||||
		memcpy(pdata, pb->data, psize);
 | 
							memcpy(pdata, pb->data, psize);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pdata = xrealloc(pdata, 1, psize + newsize);
 | 
						pdata = xrealloc(pdata, psize + newsize);
 | 
				
			||||||
	memcpy(pdata + psize, args->argv[0], newsize);
 | 
						memcpy(pdata + psize, args->argv[0], newsize);
 | 
				
			||||||
	psize += newsize;
 | 
						psize += newsize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										19
									
								
								cmd-string.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								cmd-string.c
									
									
									
									
									
								
							@@ -107,10 +107,11 @@ cmd_string_parse(const char *s, struct cmd_list **cmdlist, const char *file,
 | 
				
			|||||||
		case ' ':
 | 
							case ' ':
 | 
				
			||||||
		case '\t':
 | 
							case '\t':
 | 
				
			||||||
			if (buf != NULL) {
 | 
								if (buf != NULL) {
 | 
				
			||||||
				buf = xrealloc(buf, 1, len + 1);
 | 
									buf = xrealloc(buf, len + 1);
 | 
				
			||||||
				buf[len] = '\0';
 | 
									buf[len] = '\0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				argv = xrealloc(argv, argc + 1, sizeof *argv);
 | 
									argv = xreallocarray(argv, argc + 1,
 | 
				
			||||||
 | 
									    sizeof *argv);
 | 
				
			||||||
				argv[argc++] = buf;
 | 
									argv[argc++] = buf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				buf = NULL;
 | 
									buf = NULL;
 | 
				
			||||||
@@ -151,7 +152,7 @@ cmd_string_parse(const char *s, struct cmd_list **cmdlist, const char *file,
 | 
				
			|||||||
			if (len >= SIZE_MAX - 2)
 | 
								if (len >= SIZE_MAX - 2)
 | 
				
			||||||
				goto error;
 | 
									goto error;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			buf = xrealloc(buf, 1, len + 1);
 | 
								buf = xrealloc(buf, len + 1);
 | 
				
			||||||
			buf[len++] = ch;
 | 
								buf[len++] = ch;
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -179,7 +180,7 @@ cmd_string_copy(char **dst, char *src, size_t *len)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	srclen = strlen(src);
 | 
						srclen = strlen(src);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	*dst = xrealloc(*dst, 1, *len + srclen + 1);
 | 
						*dst = xrealloc(*dst, *len + srclen + 1);
 | 
				
			||||||
	strlcpy(*dst + *len, src, srclen + 1);
 | 
						strlcpy(*dst + *len, src, srclen + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	*len += srclen;
 | 
						*len += srclen;
 | 
				
			||||||
@@ -231,11 +232,11 @@ cmd_string_string(const char *s, size_t *p, char endch, int esc)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if (len >= SIZE_MAX - 2)
 | 
							if (len >= SIZE_MAX - 2)
 | 
				
			||||||
			goto error;
 | 
								goto error;
 | 
				
			||||||
		buf = xrealloc(buf, 1, len + 1);
 | 
							buf = xrealloc(buf, len + 1);
 | 
				
			||||||
		buf[len++] = ch;
 | 
							buf[len++] = ch;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	buf = xrealloc(buf, 1, len + 1);
 | 
						buf = xrealloc(buf, len + 1);
 | 
				
			||||||
	buf[len] = '\0';
 | 
						buf[len] = '\0';
 | 
				
			||||||
	return (buf);
 | 
						return (buf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -278,7 +279,7 @@ cmd_string_variable(const char *s, size_t *p)
 | 
				
			|||||||
			return (t);
 | 
								return (t);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		buf = xrealloc(buf, 1, len + 1);
 | 
							buf = xrealloc(buf, len + 1);
 | 
				
			||||||
		buf[len++] = ch;
 | 
							buf[len++] = ch;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for (;;) {
 | 
							for (;;) {
 | 
				
			||||||
@@ -288,7 +289,7 @@ cmd_string_variable(const char *s, size_t *p)
 | 
				
			|||||||
			else {
 | 
								else {
 | 
				
			||||||
				if (len >= SIZE_MAX - 3)
 | 
									if (len >= SIZE_MAX - 3)
 | 
				
			||||||
					goto error;
 | 
										goto error;
 | 
				
			||||||
				buf = xrealloc(buf, 1, len + 1);
 | 
									buf = xrealloc(buf, len + 1);
 | 
				
			||||||
				buf[len++] = ch;
 | 
									buf[len++] = ch;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -299,7 +300,7 @@ cmd_string_variable(const char *s, size_t *p)
 | 
				
			|||||||
	if (ch != EOF && fch != '{')
 | 
						if (ch != EOF && fch != '{')
 | 
				
			||||||
		cmd_string_ungetc(p); /* ch */
 | 
							cmd_string_ungetc(p); /* ch */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	buf = xrealloc(buf, 1, len + 1);
 | 
						buf = xrealloc(buf, len + 1);
 | 
				
			||||||
	buf[len] = '\0';
 | 
						buf[len] = '\0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	envent = environ_find(&global_environ, buf);
 | 
						envent = environ_find(&global_environ, buf);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								cmd.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								cmd.c
									
									
									
									
									
								
							@@ -222,7 +222,7 @@ cmd_stringify_argv(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < argc; i++) {
 | 
						for (i = 0; i < argc; i++) {
 | 
				
			||||||
		len += strlen(argv[i]) + 1;
 | 
							len += strlen(argv[i]) + 1;
 | 
				
			||||||
		buf = xrealloc(buf, 1, len);
 | 
							buf = xrealloc(buf, len);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (i == 0)
 | 
							if (i == 0)
 | 
				
			||||||
			*buf = '\0';
 | 
								*buf = '\0';
 | 
				
			||||||
@@ -1302,11 +1302,11 @@ cmd_template_replace(const char *template, const char *s, int idx)
 | 
				
			|||||||
			ptr++;
 | 
								ptr++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			len += strlen(s);
 | 
								len += strlen(s);
 | 
				
			||||||
			buf = xrealloc(buf, 1, len + 1);
 | 
								buf = xrealloc(buf, len + 1);
 | 
				
			||||||
			strlcat(buf, s, len + 1);
 | 
								strlcat(buf, s, len + 1);
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		buf = xrealloc(buf, 1, len + 2);
 | 
							buf = xrealloc(buf, len + 2);
 | 
				
			||||||
		buf[len++] = ch;
 | 
							buf[len++] = ch;
 | 
				
			||||||
		buf[len] = '\0';
 | 
							buf[len] = '\0';
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								format.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								format.c
									
									
									
									
									
								
							@@ -267,7 +267,7 @@ format_replace(struct format_tree *ft, const char *key, size_t keylen,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* Expand the buffer and copy in the value. */
 | 
						/* Expand the buffer and copy in the value. */
 | 
				
			||||||
	while (*len - *off < valuelen + 1) {
 | 
						while (*len - *off < valuelen + 1) {
 | 
				
			||||||
		*buf = xrealloc(*buf, 2, *len);
 | 
							*buf = xreallocarray(*buf, 2, *len);
 | 
				
			||||||
		*len *= 2;
 | 
							*len *= 2;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	memcpy(*buf + *off, value, valuelen);
 | 
						memcpy(*buf + *off, value, valuelen);
 | 
				
			||||||
@@ -298,7 +298,7 @@ format_expand(struct format_tree *ft, const char *fmt)
 | 
				
			|||||||
	while (*fmt != '\0') {
 | 
						while (*fmt != '\0') {
 | 
				
			||||||
		if (*fmt != '#') {
 | 
							if (*fmt != '#') {
 | 
				
			||||||
			while (len - off < 2) {
 | 
								while (len - off < 2) {
 | 
				
			||||||
				buf = xrealloc(buf, 2, len);
 | 
									buf = xreallocarray(buf, 2, len);
 | 
				
			||||||
				len *= 2;
 | 
									len *= 2;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			buf[off++] = *fmt++;
 | 
								buf[off++] = *fmt++;
 | 
				
			||||||
@@ -326,7 +326,7 @@ format_expand(struct format_tree *ft, const char *fmt)
 | 
				
			|||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		case '#':
 | 
							case '#':
 | 
				
			||||||
			while (len - off < 2) {
 | 
								while (len - off < 2) {
 | 
				
			||||||
				buf = xrealloc(buf, 2, len);
 | 
									buf = xreallocarray(buf, 2, len);
 | 
				
			||||||
				len *= 2;
 | 
									len *= 2;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			buf[off++] = '#';
 | 
								buf[off++] = '#';
 | 
				
			||||||
@@ -339,7 +339,7 @@ format_expand(struct format_tree *ft, const char *fmt)
 | 
				
			|||||||
				s = format_lower[ch - 'a'];
 | 
									s = format_lower[ch - 'a'];
 | 
				
			||||||
			if (s == NULL) {
 | 
								if (s == NULL) {
 | 
				
			||||||
				while (len - off < 3) {
 | 
									while (len - off < 3) {
 | 
				
			||||||
					buf = xrealloc(buf, 2, len);
 | 
										buf = xreallocarray(buf, 2, len);
 | 
				
			||||||
					len *= 2;
 | 
										len *= 2;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				buf[off++] = '#';
 | 
									buf[off++] = '#';
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										14
									
								
								grid.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								grid.c
									
									
									
									
									
								
							@@ -172,7 +172,8 @@ grid_scroll_history(struct grid *gd)
 | 
				
			|||||||
	u_int	yy;
 | 
						u_int	yy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	yy = gd->hsize + gd->sy;
 | 
						yy = gd->hsize + gd->sy;
 | 
				
			||||||
	gd->linedata = xrealloc(gd->linedata, yy + 1, sizeof *gd->linedata);
 | 
						gd->linedata = xreallocarray(gd->linedata, yy + 1,
 | 
				
			||||||
 | 
						    sizeof *gd->linedata);
 | 
				
			||||||
	memset(&gd->linedata[yy], 0, sizeof gd->linedata[yy]);
 | 
						memset(&gd->linedata[yy], 0, sizeof gd->linedata[yy]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gd->hsize++;
 | 
						gd->hsize++;
 | 
				
			||||||
@@ -187,7 +188,8 @@ grid_scroll_history_region(struct grid *gd, u_int upper, u_int lower)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* Create a space for a new line. */
 | 
						/* Create a space for a new line. */
 | 
				
			||||||
	yy = gd->hsize + gd->sy;
 | 
						yy = gd->hsize + gd->sy;
 | 
				
			||||||
	gd->linedata = xrealloc(gd->linedata, yy + 1, sizeof *gd->linedata);
 | 
						gd->linedata = xreallocarray(gd->linedata, yy + 1,
 | 
				
			||||||
 | 
						    sizeof *gd->linedata);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Move the entire screen down to free a space for this line. */
 | 
						/* Move the entire screen down to free a space for this line. */
 | 
				
			||||||
	gl_history = &gd->linedata[gd->hsize];
 | 
						gl_history = &gd->linedata[gd->hsize];
 | 
				
			||||||
@@ -221,7 +223,7 @@ grid_expand_line(struct grid *gd, u_int py, u_int sx)
 | 
				
			|||||||
	if (sx <= gl->cellsize)
 | 
						if (sx <= gl->cellsize)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gl->celldata = xrealloc(gl->celldata, sx, sizeof *gl->celldata);
 | 
						gl->celldata = xreallocarray(gl->celldata, sx, sizeof *gl->celldata);
 | 
				
			||||||
	for (xx = gl->cellsize; xx < sx; xx++)
 | 
						for (xx = gl->cellsize; xx < sx; xx++)
 | 
				
			||||||
		grid_put_cell(gd, xx, py, &grid_default_cell);
 | 
							grid_put_cell(gd, xx, py, &grid_default_cell);
 | 
				
			||||||
	gl->cellsize = sx;
 | 
						gl->cellsize = sx;
 | 
				
			||||||
@@ -610,7 +612,7 @@ grid_string_cells(struct grid *gd, u_int px, u_int py, u_int nx,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		while (len < off + size + codelen + 1) {
 | 
							while (len < off + size + codelen + 1) {
 | 
				
			||||||
			buf = xrealloc(buf, 2, len);
 | 
								buf = xreallocarray(buf, 2, len);
 | 
				
			||||||
			len *= 2;
 | 
								len *= 2;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -685,7 +687,7 @@ grid_reflow_join(struct grid *dst, u_int *py, struct grid_line *src_gl,
 | 
				
			|||||||
	nx = ox + to_copy;
 | 
						nx = ox + to_copy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Resize the destination line. */
 | 
						/* Resize the destination line. */
 | 
				
			||||||
	dst_gl->celldata = xrealloc(dst_gl->celldata, nx,
 | 
						dst_gl->celldata = xreallocarray(dst_gl->celldata, nx,
 | 
				
			||||||
	    sizeof *dst_gl->celldata);
 | 
						    sizeof *dst_gl->celldata);
 | 
				
			||||||
	dst_gl->cellsize = nx;
 | 
						dst_gl->cellsize = nx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -724,7 +726,7 @@ grid_reflow_split(struct grid *dst, u_int *py, struct grid_line *src_gl,
 | 
				
			|||||||
			to_copy = src_gl->cellsize;
 | 
								to_copy = src_gl->cellsize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* Expand destination line. */
 | 
							/* Expand destination line. */
 | 
				
			||||||
		dst_gl->celldata = xrealloc(NULL, to_copy,
 | 
							dst_gl->celldata = xreallocarray(NULL, to_copy,
 | 
				
			||||||
		    sizeof *dst_gl->celldata);
 | 
							    sizeof *dst_gl->celldata);
 | 
				
			||||||
		dst_gl->cellsize = to_copy;
 | 
							dst_gl->cellsize = to_copy;
 | 
				
			||||||
		dst_gl->flags |= GRID_LINE_WRAPPED;
 | 
							dst_gl->flags |= GRID_LINE_WRAPPED;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								input.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								input.c
									
									
									
									
									
								
							@@ -909,7 +909,7 @@ input_ground(struct input_ctx *ictx)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (ictx->input_space > INPUT_BUF_START) {
 | 
						if (ictx->input_space > INPUT_BUF_START) {
 | 
				
			||||||
		ictx->input_space = INPUT_BUF_START;
 | 
							ictx->input_space = INPUT_BUF_START;
 | 
				
			||||||
		ictx->input_buf = xrealloc(ictx->input_buf, 1, INPUT_BUF_START);
 | 
							ictx->input_buf = xrealloc(ictx->input_buf, INPUT_BUF_START);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -974,7 +974,7 @@ input_input(struct input_ctx *ictx)
 | 
				
			|||||||
			ictx->flags |= INPUT_DISCARD;
 | 
								ictx->flags |= INPUT_DISCARD;
 | 
				
			||||||
			return (0);
 | 
								return (0);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		ictx->input_buf = xrealloc(ictx->input_buf, 1, available);
 | 
							ictx->input_buf = xrealloc(ictx->input_buf, available);
 | 
				
			||||||
		ictx->input_space = available;
 | 
							ictx->input_space = available;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	ictx->input_buf[ictx->input_len++] = ictx->ch;
 | 
						ictx->input_buf[ictx->input_len++] = ictx->ch;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								paste.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								paste.c
									
									
									
									
									
								
							@@ -279,7 +279,7 @@ paste_make_sample(struct paste_buffer *pb, int utf8flag)
 | 
				
			|||||||
	len = pb->size;
 | 
						len = pb->size;
 | 
				
			||||||
	if (len > width)
 | 
						if (len > width)
 | 
				
			||||||
		len = width;
 | 
							len = width;
 | 
				
			||||||
	buf = xrealloc(NULL, len, 4 + 4);
 | 
						buf = xreallocarray(NULL, len, 4 + 4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (utf8flag)
 | 
						if (utf8flag)
 | 
				
			||||||
		used = utf8_strvis(buf, pb->data, len, flags);
 | 
							used = utf8_strvis(buf, pb->data, len, flags);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								screen.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								screen.c
									
									
									
									
									
								
							@@ -215,8 +215,8 @@ screen_resize_y(struct screen *s, u_int sy)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Resize line arrays. */
 | 
						/* Resize line arrays. */
 | 
				
			||||||
	gd->linedata = xrealloc(
 | 
						gd->linedata = xreallocarray(gd->linedata, gd->hsize + sy,
 | 
				
			||||||
	    gd->linedata, gd->hsize + sy, sizeof *gd->linedata);
 | 
						    sizeof *gd->linedata);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Size increasing. */
 | 
						/* Size increasing. */
 | 
				
			||||||
	if (sy > oldy) {
 | 
						if (sy > oldy) {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								status.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								status.c
									
									
									
									
									
								
							@@ -992,7 +992,7 @@ status_prompt_key(struct client *c, int key)
 | 
				
			|||||||
		/* Insert the new word. */
 | 
							/* Insert the new word. */
 | 
				
			||||||
		size += strlen(s);
 | 
							size += strlen(s);
 | 
				
			||||||
		off = first - c->prompt_buffer;
 | 
							off = first - c->prompt_buffer;
 | 
				
			||||||
		c->prompt_buffer = xrealloc(c->prompt_buffer, 1, size + 1);
 | 
							c->prompt_buffer = xrealloc(c->prompt_buffer, size + 1);
 | 
				
			||||||
		first = c->prompt_buffer + off;
 | 
							first = c->prompt_buffer + off;
 | 
				
			||||||
		memmove(first + strlen(s), first, n);
 | 
							memmove(first + strlen(s), first, n);
 | 
				
			||||||
		memcpy(first, s, strlen(s));
 | 
							memcpy(first, s, strlen(s));
 | 
				
			||||||
@@ -1170,7 +1170,7 @@ status_prompt_key(struct client *c, int key)
 | 
				
			|||||||
				break;
 | 
									break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		c->prompt_buffer = xrealloc(c->prompt_buffer, 1, size + n + 1);
 | 
							c->prompt_buffer = xrealloc(c->prompt_buffer, size + n + 1);
 | 
				
			||||||
		if (c->prompt_index == size) {
 | 
							if (c->prompt_index == size) {
 | 
				
			||||||
			memcpy(c->prompt_buffer + c->prompt_index, pb->data, n);
 | 
								memcpy(c->prompt_buffer + c->prompt_index, pb->data, n);
 | 
				
			||||||
			c->prompt_index += n;
 | 
								c->prompt_index += n;
 | 
				
			||||||
@@ -1210,7 +1210,7 @@ status_prompt_key(struct client *c, int key)
 | 
				
			|||||||
	case MODEKEY_OTHER:
 | 
						case MODEKEY_OTHER:
 | 
				
			||||||
		if ((key & 0xff00) != 0 || key < 32 || key == 127)
 | 
							if ((key & 0xff00) != 0 || key < 32 || key == 127)
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		c->prompt_buffer = xrealloc(c->prompt_buffer, 1, size + 2);
 | 
							c->prompt_buffer = xrealloc(c->prompt_buffer, size + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (c->prompt_index == size) {
 | 
							if (c->prompt_index == size) {
 | 
				
			||||||
			c->prompt_buffer[c->prompt_index++] = key;
 | 
								c->prompt_buffer[c->prompt_index++] = key;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								tmux.h
									
									
									
									
									
								
							@@ -2408,7 +2408,8 @@ __dead void printflike1 log_fatalx(const char *, ...);
 | 
				
			|||||||
char		*xstrdup(const char *);
 | 
					char		*xstrdup(const char *);
 | 
				
			||||||
void		*xcalloc(size_t, size_t);
 | 
					void		*xcalloc(size_t, size_t);
 | 
				
			||||||
void		*xmalloc(size_t);
 | 
					void		*xmalloc(size_t);
 | 
				
			||||||
void		*xrealloc(void *, size_t, size_t);
 | 
					void		*xrealloc(void *, size_t);
 | 
				
			||||||
 | 
					void		*xreallocarray(void *, size_t, size_t);
 | 
				
			||||||
int printflike2	 xasprintf(char **, const char *, ...);
 | 
					int printflike2	 xasprintf(char **, const char *, ...);
 | 
				
			||||||
int		 xvasprintf(char **, const char *, va_list);
 | 
					int		 xvasprintf(char **, const char *, va_list);
 | 
				
			||||||
int printflike3	 xsnprintf(char *, size_t, const char *, ...);
 | 
					int printflike3	 xsnprintf(char *, size_t, const char *, ...);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								utf8.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								utf8.c
									
									
									
									
									
								
							@@ -419,7 +419,7 @@ utf8_fromcstr(const char *src)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	n = 0;
 | 
						n = 0;
 | 
				
			||||||
	while (*src != '\0') {
 | 
						while (*src != '\0') {
 | 
				
			||||||
		dst = xrealloc(dst, n + 1, sizeof *dst);
 | 
							dst = xreallocarray(dst, n + 1, sizeof *dst);
 | 
				
			||||||
		if (utf8_open(&dst[n], *src)) {
 | 
							if (utf8_open(&dst[n], *src)) {
 | 
				
			||||||
			more = 1;
 | 
								more = 1;
 | 
				
			||||||
			while (*++src != '\0' && more)
 | 
								while (*++src != '\0' && more)
 | 
				
			||||||
@@ -436,7 +436,7 @@ utf8_fromcstr(const char *src)
 | 
				
			|||||||
		n++;
 | 
							n++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dst = xrealloc(dst, n + 1, sizeof *dst);
 | 
						dst = xreallocarray(dst, n + 1, sizeof *dst);
 | 
				
			||||||
	dst[n].size = 0;
 | 
						dst[n].size = 0;
 | 
				
			||||||
	return (dst);
 | 
						return (dst);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -452,12 +452,12 @@ utf8_tocstr(struct utf8_data *src)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	n = 0;
 | 
						n = 0;
 | 
				
			||||||
	for(; src->size != 0; src++) {
 | 
						for(; src->size != 0; src++) {
 | 
				
			||||||
		dst = xrealloc(dst, n + src->size, 1);
 | 
							dst = xreallocarray(dst, n + src->size, 1);
 | 
				
			||||||
		memcpy(dst + n, src->data, src->size);
 | 
							memcpy(dst + n, src->data, src->size);
 | 
				
			||||||
		n += src->size;
 | 
							n += src->size;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dst = xrealloc(dst, n + 1, 1);
 | 
						dst = xreallocarray(dst, n + 1, 1);
 | 
				
			||||||
	dst[n] = '\0';
 | 
						dst[n] = '\0';
 | 
				
			||||||
	return (dst);
 | 
						return (dst);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -317,7 +317,7 @@ window_choose_prompt_input(enum window_choose_input_type input_type,
 | 
				
			|||||||
	data->input_prompt = prompt;
 | 
						data->input_prompt = prompt;
 | 
				
			||||||
	input_len = strlen(data->input_str) + 2;
 | 
						input_len = strlen(data->input_str) + 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	data->input_str = xrealloc(data->input_str, 1, input_len);
 | 
						data->input_str = xrealloc(data->input_str, input_len);
 | 
				
			||||||
	data->input_str[input_len - 2] = key;
 | 
						data->input_str[input_len - 2] = key;
 | 
				
			||||||
	data->input_str[input_len - 1] = '\0';
 | 
						data->input_str[input_len - 1] = '\0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -794,7 +794,7 @@ window_copy_key_input(struct window_pane *wp, int key)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		inputlen = strlen(data->inputstr);
 | 
							inputlen = strlen(data->inputstr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		data->inputstr = xrealloc(data->inputstr, 1, inputlen + n + 1);
 | 
							data->inputstr = xrealloc(data->inputstr, inputlen + n + 1);
 | 
				
			||||||
		memcpy(data->inputstr + inputlen, pb->data, n);
 | 
							memcpy(data->inputstr + inputlen, pb->data, n);
 | 
				
			||||||
		data->inputstr[inputlen + n] = '\0';
 | 
							data->inputstr[inputlen + n] = '\0';
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
@@ -840,7 +840,7 @@ window_copy_key_input(struct window_pane *wp, int key)
 | 
				
			|||||||
			break;
 | 
								break;
 | 
				
			||||||
		inputlen = strlen(data->inputstr) + 2;
 | 
							inputlen = strlen(data->inputstr) + 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		data->inputstr = xrealloc(data->inputstr, 1, inputlen);
 | 
							data->inputstr = xrealloc(data->inputstr, inputlen);
 | 
				
			||||||
		data->inputstr[inputlen - 2] = key;
 | 
							data->inputstr[inputlen - 2] = key;
 | 
				
			||||||
		data->inputstr[inputlen - 1] = '\0';
 | 
							data->inputstr[inputlen - 1] = '\0';
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
@@ -1533,7 +1533,7 @@ window_copy_append_selection(struct window_pane *wp, const char *bufname)
 | 
				
			|||||||
	} else
 | 
						} else
 | 
				
			||||||
		pb = paste_get_name(bufname);
 | 
							pb = paste_get_name(bufname);
 | 
				
			||||||
	if (pb != NULL) {
 | 
						if (pb != NULL) {
 | 
				
			||||||
		buf = xrealloc(buf, 1, len + pb->size);
 | 
							buf = xrealloc(buf, len + pb->size);
 | 
				
			||||||
		memmove(buf + pb->size, buf, len);
 | 
							memmove(buf + pb->size, buf, len);
 | 
				
			||||||
		memcpy(buf, pb->data, pb->size);
 | 
							memcpy(buf, pb->data, pb->size);
 | 
				
			||||||
		len += pb->size;
 | 
							len += pb->size;
 | 
				
			||||||
@@ -1589,7 +1589,7 @@ window_copy_copy_line(struct window_pane *wp,
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			*buf = xrealloc(*buf, 1, (*off) + ud.size);
 | 
								*buf = xrealloc(*buf, (*off) + ud.size);
 | 
				
			||||||
			memcpy(*buf + *off, ud.data, ud.size);
 | 
								memcpy(*buf + *off, ud.data, ud.size);
 | 
				
			||||||
			*off += ud.size;
 | 
								*off += ud.size;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -1597,7 +1597,7 @@ window_copy_copy_line(struct window_pane *wp,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* Only add a newline if the line wasn't wrapped. */
 | 
						/* Only add a newline if the line wasn't wrapped. */
 | 
				
			||||||
	if (!wrapped || ex != xx) {
 | 
						if (!wrapped || ex != xx) {
 | 
				
			||||||
		*buf = xrealloc(*buf, 1, (*off) + 1);
 | 
							*buf = xrealloc(*buf, (*off) + 1);
 | 
				
			||||||
		(*buf)[(*off)++] = '\n';
 | 
							(*buf)[(*off)++] = '\n';
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										17
									
								
								xmalloc.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								xmalloc.c
									
									
									
									
									
								
							@@ -68,7 +68,20 @@ xmalloc(size_t size)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void *
 | 
					void *
 | 
				
			||||||
xrealloc(void *oldptr, size_t nmemb, size_t size)
 | 
					xrealloc(void *oldptr, size_t newsize)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						void	*newptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (newsize == 0)
 | 
				
			||||||
 | 
							fatalx("zero size");
 | 
				
			||||||
 | 
						if ((newptr = realloc(oldptr, newsize)) == NULL)
 | 
				
			||||||
 | 
							fatal("xrealloc failed");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return (newptr);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void *
 | 
				
			||||||
 | 
					xreallocarray(void *oldptr, size_t nmemb, size_t size)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	size_t	 newsize = nmemb * size;
 | 
						size_t	 newsize = nmemb * size;
 | 
				
			||||||
	void	*newptr;
 | 
						void	*newptr;
 | 
				
			||||||
@@ -78,7 +91,7 @@ xrealloc(void *oldptr, size_t nmemb, size_t size)
 | 
				
			|||||||
	if (SIZE_MAX / nmemb < size)
 | 
						if (SIZE_MAX / nmemb < size)
 | 
				
			||||||
		fatalx("nmemb * size > SIZE_MAX");
 | 
							fatalx("nmemb * size > SIZE_MAX");
 | 
				
			||||||
	if ((newptr = realloc(oldptr, newsize)) == NULL)
 | 
						if ((newptr = realloc(oldptr, newsize)) == NULL)
 | 
				
			||||||
		fatal("xrealloc failed");
 | 
							fatal("xreallocarray failed");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return (newptr);
 | 
						return (newptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user