Re: [GSOC][PATCH] Fixed an issue which contained extra unnecessary code
- From
Christian Couder <christian.couder@gmail.com>
- Date
- Mar 10, 2019, 18:10 UTC
- Message-ID
- <CAP8UFD03cjbWE1pKRj93BKxxQnNuAUPCHNxmtM8RqqfJO2nu-Q@mail.gmail.com>
- In-Reply-To
- <20190310143126.GA13588@hacker-queen>
On Sun, Mar 10, 2019 at 4:30 PM sushmaunnibhavi <sushmaunnibhavi425@gmail.com> wrote:
Show 10 quoted lines
> > From 5a6c233c6bf0a35aca000b32b9e936a34532900a Mon Sep 17 00:00:00 2001 > From: sushmaunnibhavi <sushmaunnibhavi@gmail.com> > Date: Sun, 10 Mar 2019 19:37:33 +0530 > Subject: [GSOC][PATCH] Fixed an issue which contained extra unnecessary code > Signed-off-by: Sushma Unnibhavi <sushmaunnibhavi425@gmail.com> > --- > Since '\n' and '\0' are char_len==1,it is not necessary to check if the char_len<=1. > compat/regex/regexec.c | 5 ----- > 1 file changed, 5 deletions(-)
It doesn't look like the patch is formatted correctly. I think that the explanation line ("Since '\n' and '\0' are...") should be above the line that contains your "Signed-off-by: ..." and there should be a blank line between those two lines.
Also we ask for an author name in the "From: ..." header that looks like "Firstname Lastname". A simple way to do that would be to make it match the name in your "Signed-off-by: ...".
Show 16 quoted lines
> diff --git a/compat/regex/regexec.c b/compat/regex/regexec.c
> index 1b5d89fd5e..df62597531 100644
> --- a/compat/regex/regexec.c
> +++ b/compat/regex/regexec.c
> @@ -3799,11 +3799,6 @@ check_node_accept_bytes (const re_dfa_t *dfa, int node_idx,
> char_len = re_string_char_size_at (input, str_idx);
> if (node->type == OP_PERIOD)
> {
> - if (char_len <= 1)
> - return 0;
> - /* FIXME: I don't think this if is needed, as both '\n'
> - and '\0' are char_len == 1. */
> - /* '.' accepts any one character except the following two cases. */
> if ((!(dfa->syntax & RE_DOT_NEWLINE) &&
> re_string_byte_at (input, str_idx) == '\n') ||
> ((dfa->syntax & RE_DOT_NOT_NULL) &&The code looks like:
char_len = re_string_char_size_at (input, str_idx);
if (node->type == OP_PERIOD)
{
if (char_len <= 1)
return 0;
/* FIXME: I don't think this if is needed, as both '\n'
and '\0' are char_len == 1. */
/* '.' accepts any one character except the following two cases. */
if ((!(dfa->syntax & RE_DOT_NEWLINE) &&
re_string_byte_at (input, str_idx) == '\n') ||
((dfa->syntax & RE_DOT_NOT_NULL) &&
re_string_byte_at (input, str_idx) == '\0'))
return 0;
return char_len;
}If the byte at re_string_byte_at (input, str_idx) is indeed '\n' or '\0', then yeah probably char_len == 1 so the current code should return 0 just before the code below the FIXME comment is reached. So in this case the 2 checks below the FIXME comment are useless because they check re_string_byte_at (input, str_idx) == '\n') and re_string_byte_at (input, str_idx) == '\0' which cannot happen.
So I would say that the right fix would be to remove those 2 checks, not to remove the if (char_len <= 1) check above the FIXME comment.
Also note that I used "probably" when I wrote "then yeah probably char_len == 1", because I think it is worth checking what re_string_char_size_at() actually does before being too much confident...