coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] maint: avoid clang static analysis issues in csplit


From: Jim Meyering
Subject: Re: [PATCH] maint: avoid clang static analysis issues in csplit
Date: Sat, 27 Jul 2013 20:26:42 -0700

Reduced scope and cleaner static analysis runs are always welcome. Thanks.

On Sat, Jul 27, 2013 at 6:33 PM, Pádraig Brady <address@hidden> wrote:
> * src/csplit.c (find_lines): Assert that load_buffer() updates the
> global buffers, thus "b" will be non NULL, thus suppressing subsequent
> NULL pointer derefence warnings.
> (process_regexp): Avoid a redundant assignment of the "line" pointer.
> (process_line_count): Likewise.  Also reduce the "line" pointer scope.
> ---
>  src/csplit.c |    9 +++++----
>  1 files changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/src/csplit.c b/src/csplit.c
> index 7a36e67..5bfca09 100644
> --- a/src/csplit.c
> +++ b/src/csplit.c
> @@ -19,6 +19,7 @@
>
>  #include <config.h>
>
> +#include <assert.h>
>  #include <getopt.h>
>  #include <sys/types.h>
>  #include <signal.h>
> @@ -612,6 +613,7 @@ find_line (uintmax_t linenum)
>
>    for (b = head;;)
>      {
> +      assert (b);
>        if (linenum < b->start_line + b->num_lines)
>          {
>            /* The line is in this buffer. */
> @@ -728,7 +730,6 @@ process_line_count (const struct control *p, uintmax_t 
> repetition)
>  {
>    uintmax_t linenum;
>    uintmax_t last_line_to_save = p->lines_required * (repetition + 1);
> -  struct cstring *line;
>
>    create_output_file ();
>
> @@ -741,7 +742,7 @@ process_line_count (const struct control *p, uintmax_t 
> repetition)
>    linenum = get_first_line_in_buffer ();
>    while (linenum++ < last_line_to_save)
>      {
> -      line = remove_line ();
> +      struct cstring *line = remove_line ();
>        if (line == NULL)
>          handle_line_error (p, repetition);
>        save_line_to_file (line);
> @@ -750,7 +751,7 @@ process_line_count (const struct control *p, uintmax_t 
> repetition)
>    close_output_file ();
>
>    if (suppress_matched)
> -    line = remove_line ();
> +    remove_line ();
>
>    /* Ensure that the line number specified is not 1 greater than
>       the number of lines in the file. */
> @@ -798,7 +799,7 @@ process_regexp (struct control *p, uintmax_t repetition)
>      create_output_file ();
>
>    if (suppress_matched && current_line > 0)
> -    line = remove_line ();
> +    remove_line ();
>
>    /* If there is no offset for the regular expression, or
>       it is positive, then it is not necessary to buffer the lines. */
> --
> 1.7.7.6
>
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]