View | Details | Raw Unified | Return to bug 210344 | Differences between
and this patch

Collapse All | Expand All

(-)ul.c (-4 / +27 lines)
Lines 78-84 Link Here
78
	int	c_width;	/* width or -1 if multi-column char. filler */
78
	int	c_width;	/* width or -1 if multi-column char. filler */
79
} ;
79
} ;
80
80
81
static struct	CHAR	obuf[MAXBUF];
81
static struct	CHAR	sobuf[MAXBUF]; // static output buffer
82
static struct	CHAR	*obuf = sobuf;
83
static int	buflen = MAXBUF;
82
static int	col, maxcol;
84
static int	col, maxcol;
83
static int	mode;
85
static int	mode;
84
static int	halfpos;
86
static int	halfpos;
Lines 151-156 Link Here
151
		else
153
		else
152
			filter(f);
154
			filter(f);
153
	}
155
	}
156
	if (obuf != sobuf) {
157
		free(obuf);
158
	}
154
	exit(0);
159
	exit(0);
155
}
160
}
156
161
Lines 166-174 Link Here
166
{
171
{
167
	wint_t c;
172
	wint_t c;
168
	int i, w;
173
	int i, w;
174
	int copy = 0;
169
175
170
	while ((c = getwc(f)) != WEOF && col < MAXBUF) switch(c) {
176
	while ((c = getwc(f)) != WEOF) {
171
177
		if (col == buflen) {
178
			if (obuf == sobuf) {
179
				obuf = NULL;
180
				copy = 1;
181
			}
182
			obuf = realloc(obuf, sizeof(*obuf) * 2 * buflen);
183
			if (obuf == NULL) {
184
				obuf = sobuf;
185
				break;
186
			} else if (copy) {
187
				memcpy(obuf, sobuf, sizeof(*obuf) * buflen);
188
				copy = 0;
189
			}
190
			bzero((char *)(obuf + buflen), sizeof(*obuf) * buflen);
191
			buflen *= 2;
192
		}
193
		switch(c) {
172
	case '\b':
194
	case '\b':
173
		if (col > 0)
195
		if (col > 0)
174
			col--;
196
			col--;
Lines 289-294 Link Here
289
			maxcol = col;
311
			maxcol = col;
290
		continue;
312
		continue;
291
	}
313
	}
314
	}
292
	if (ferror(f))
315
	if (ferror(f))
293
		err(1, NULL);
316
		err(1, NULL);
294
	if (maxcol)
317
	if (maxcol)
Lines 405-411 Link Here
405
initbuf(void)
428
initbuf(void)
406
{
429
{
407
430
408
	bzero((char *)obuf, sizeof (obuf));	/* depends on NORMAL == 0 */
431
	bzero((char *)obuf, buflen * sizeof(*obuf)); /* depends on NORMAL == 0 */
409
	col = 0;
432
	col = 0;
410
	maxcol = 0;
433
	maxcol = 0;
411
	mode &= ALTSET;
434
	mode &= ALTSET;

Return to bug 210344