Date: Mon, 2 Jan 2017 14:22:36 -0500 From: Pedro Giffuni <pfg@FreeBSD.org> To: cem@freebsd.org Cc: src-committers <src-committers@freebsd.org>, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r311109 - head/usr.bin/patch Message-ID: <aa9172cb-cb95-36cf-c21d-48f8a7450ad5@FreeBSD.org> In-Reply-To: <CAG6CVpUUFoTZBO0Ja2aSn%2BeMi_BO0u131YKQ1yQumu%2BdRhVY3A@mail.gmail.com> References: <201701021823.v02INWXc028047@repo.freebsd.org> <CAG6CVpUUFoTZBO0Ja2aSn%2BeMi_BO0u131YKQ1yQumu%2BdRhVY3A@mail.gmail.com>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
Hi;
On 01/02/17 13:28, Conrad Meyer wrote:
> IMO this patch was mostly fine, you just need to restrict line length
> to UINT32_MAX/2 instead of UINT_MAX (== UINT32_MAX) for 32-bit
> platforms.
>
> Best,
> Conrad
>
I dislike the idea of special cases for some platforms. I guess moving
to int/INT_MAX would be the way to go.
TBH, no one has asked for patches wider than USHRT_MAX though.
Pedro.
[-- Attachment #2 --]
Index: usr.bin/patch/patch.c
===================================================================
--- usr.bin/patch/patch.c (revision 311110)
+++ usr.bin/patch/patch.c (working copy)
@@ -753,7 +753,7 @@
fprintf(rejfp, "%c%s", ch, line);
if (len == 0 || line[len - 1] != '\n') {
- if (len >= USHRT_MAX)
+ if (len >= INT_MAX)
fprintf(rejfp, "\n\\ Line too long\n");
else
fprintf(rejfp, "\n\\ No newline at end of line\n");
@@ -1024,7 +1024,7 @@
LINENUM pat_lines = pch_ptrn_lines() - fuzz;
const char *ilineptr;
const char *plineptr;
- unsigned short plinelen;
+ int plinelen;
for (iline = base + offset + fuzz; pline <= pat_lines; pline++, iline++) {
ilineptr = ifetch(iline, offset >= 0);
Index: usr.bin/patch/pch.c
===================================================================
--- usr.bin/patch/pch.c (revision 311109)
+++ usr.bin/patch/pch.c (working copy)
@@ -56,7 +56,7 @@
static LINENUM p_context = 3; /* # of context lines */
static LINENUM p_input_line = 0; /* current line # from patch file */
static char **p_line = NULL;/* the text of the hunk */
-static unsigned short *p_len = NULL; /* length of each line */
+static int *p_len = NULL; /* length of each line */
static char *p_char = NULL; /* +, -, and ! */
static int hunkmax = INITHUNKMAX; /* size of above arrays to begin with */
static int p_indent; /* indent to patch */
@@ -136,7 +136,7 @@
if (p_line == NULL)
p_line = malloc(hunkmax * sizeof(char *));
if (p_len == NULL)
- p_len = malloc(hunkmax * sizeof(unsigned short));
+ p_len = malloc(hunkmax * sizeof(int));
if (p_char == NULL)
p_char = malloc(hunkmax * sizeof(char));
}
@@ -153,7 +153,7 @@
fatal("Internal memory allocation error\n");
p_line = reallocf(p_line, new_hunkmax * sizeof(char *));
- p_len = reallocf(p_len, new_hunkmax * sizeof(unsigned short));
+ p_len = reallocf(p_len, new_hunkmax * sizeof(int));
p_char = reallocf(p_char, new_hunkmax * sizeof(char));
if (p_line != NULL && p_len != NULL && p_char != NULL) {
@@ -1210,7 +1210,7 @@
pch_swap(void)
{
char **tp_line; /* the text of the hunk */
- unsigned short *tp_len;/* length of each line */
+ int *tp_len; /* length of each line */
char *tp_char; /* +, -, and ! */
LINENUM i;
LINENUM n;
@@ -1367,7 +1367,7 @@
/*
* Return the length of a particular patch line.
*/
-unsigned short
+int
pch_line_len(LINENUM line)
{
return p_len[line];
Index: usr.bin/patch/pch.h
===================================================================
--- usr.bin/patch/pch.h (revision 311109)
+++ usr.bin/patch/pch.h (working copy)
@@ -44,7 +44,7 @@
bool another_hunk(void);
bool pch_swap(void);
char *pfetch(LINENUM);
-unsigned short pch_line_len(LINENUM);
+int pch_line_len(LINENUM);
LINENUM pch_first(void);
LINENUM pch_ptrn_lines(void);
LINENUM pch_newfirst(void);
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?aa9172cb-cb95-36cf-c21d-48f8a7450ad5>
