threads / patch / 32420

patchbuiltin/clean.c: Fix some sparse warnings

Subject: [PATCH] builtin/clean.c: Fix some sparse warnings

## tl;dr

2 messages between Dec 20, 2012 and Dec 21, 2012. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Ramsay Jones· Dec 20, 2012, 18:33 UTC · lore

Sparse issues two "Using plain integer as NULL pointer" warnings (lines 41 and 47).

The first warning relates to the initializer expression in the declaration for the 'char *dir' variable. In order to suppress the warning, we simply replace the zero initializer with NULL.

The second warning relates to an expression, as part of an if conditional, using the equality operator to compare the 'dir' variable to zero. In order to suppress the warning, we replace the 'dir == 0' expression with the more idiomatic '!dir'.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
---
Hi Zoltan,

If you have already updated your patch and made this redundant (it's been a few days since I read the list or fetched git.git), please ignore this. Otherwise, could you please squash this into the new version of commit 16e4033e6 ("git-clean: Display more accurate delete messages", 17-12-2012).

[BTW, in the same conditional expression you have an strncmp() call which doesn't quite follow the style/conventions of the existing code.]

Thanks!

ATB, Ramsay Jones

 builtin/clean.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
Show changes to builtin/clean.c +2 −2
diff --git a/builtin/clean.c b/builtin/clean.c
index 1c25a75..0c603c8 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
@@ -38,13 +38,13 @@ static void print_filtered(const char *msg, struct string_list *lst)
 {
 	int i;
 	char *name;
-	char *dir = 0;
+	char *dir = NULL;
 
 	sort_string_list(lst);
 
 	for (i = 0; i < lst->nr; i++) {
 		name = lst->items[i].string;
-		if (dir == 0 || strncmp(name, dir, strlen(dir)) != 0)
+		if (!dir || strncmp(name, dir, strlen(dir)) != 0)
 			printf("%s %s\n", msg, name);
 		if (name[strlen(name) - 1] == '/')
 			dir = name;
-- 
1.8.0
Zoltan Klinger· Dec 21, 2012, 12:31 UTC · re: Ramsay Jones · lore

Re: [PATCH] builtin/clean.c: Fix some sparse warnings

Thanks, Ramsay. I am rewriting the whole patch to do things a better way (as kindly suggested by Junio). So the print_filtered() function is going to disappear, but thanks for pointing out the problems with the existing code. Cheers, Zoltan

On 21 December 2012 05:33, Ramsay Jones <ramsay@ramsay1.demon.co.uk> wrote:
Show 59 quoted lines
>
> Sparse issues two "Using plain integer as NULL pointer" warnings
> (lines 41 and 47).
>
> The first warning relates to the initializer expression in the
> declaration for the 'char *dir' variable. In order to suppress
> the warning, we simply replace the zero initializer with NULL.
>
> The second warning relates to an expression, as part of an if
> conditional, using the equality operator to compare the 'dir'
> variable to zero. In order to suppress the warning, we replace
> the 'dir == 0' expression with the more idiomatic '!dir'.
>
> Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
> ---
>
> Hi Zoltan,
>
> If you have already updated your patch and made this redundant
> (it's been a few days since I read the list or fetched git.git),
> please ignore this. Otherwise, could you please squash this into
> the new version of commit 16e4033e6 ("git-clean: Display more
> accurate delete messages", 17-12-2012).
>
> [BTW, in the same conditional expression you have an strncmp()
> call which doesn't quite follow the style/conventions of the
> existing code.]
>
> Thanks!
>
> ATB,
> Ramsay Jones
>
>  builtin/clean.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/builtin/clean.c b/builtin/clean.c
> index 1c25a75..0c603c8 100644
> --- a/builtin/clean.c
> +++ b/builtin/clean.c
> @@ -38,13 +38,13 @@ static void print_filtered(const char *msg, struct string_list *lst)
>  {
>         int i;
>         char *name;
> -       char *dir = 0;
> +       char *dir = NULL;
>
>         sort_string_list(lst);
>
>         for (i = 0; i < lst->nr; i++) {
>                 name = lst->items[i].string;
> -               if (dir == 0 || strncmp(name, dir, strlen(dir)) != 0)
> +               if (!dir || strncmp(name, dir, strlen(dir)) != 0)
>                         printf("%s %s\n", msg, name);
>                 if (name[strlen(name) - 1] == '/')
>                         dir = name;
> --
> 1.8.0
>

← back to recent threads