Web lists-archives.com

Re: [GSOC][PATCH] Fixed an issue which contained extra unnecessary code




On Sun, Mar 10, 2019 at 4:30 PM sushmaunnibhavi
<sushmaunnibhavi425@xxxxxxxxx> wrote:
>
> From 5a6c233c6bf0a35aca000b32b9e936a34532900a Mon Sep 17 00:00:00 2001
> From: sushmaunnibhavi <sushmaunnibhavi@xxxxxxxxx>
> 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@xxxxxxxxx>
> ---
> 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: ...".

> 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...