Bug #165: Deletion of unnecessary null pointer checks

The function "free" performs input parameter validation.
http://pubs.opengroup.org/onlinepubs/9699919799/functions/free.html

It is therefore not needed to check a passed pointer before this function call.
A corresponding update suggestion was generated by the software "Coccinelle"
from the following semantic patch approach.
http://coccinelle.lip6.fr/

@Remove_unnecessary_pointer_checks1@
expression x;
@@
-if (x != \(0 \| NULL\))
    free(x);

@Remove_unnecessary_pointer_checks2@
expression x;
@@
-if (x != \(0 \| NULL\)) {
    free(x);
    x = \(0 \| NULL\);
-}

@Remove_unnecessary_pointer_checks3@
expression a, b;
@@
-if (a != \(0 \| NULL\) && b != \(0 \| NULL\))
+if (a)
    free(b);

@Remove_unnecessary_pointer_checks4@
expression a, b;
@@
-if (a != \(0 \| NULL\) && b != \(0 \| NULL\)) {
+if (a) {
    free(b);
    b = \(0 \| NULL\);
 }

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
This commit is contained in:
Markus Elfring 2014-08-21 20:51:02 +02:00 committed by Bert Münnich
parent 75a665670a
commit 0f6cb93a09
3 changed files with 10 additions and 19 deletions

3
main.c
View file

@ -810,8 +810,7 @@ int main(int argc, char **argv)
filename[len-1] = '\0'; filename[len-1] = '\0';
check_add_file(filename); check_add_file(filename);
} }
if (filename != NULL) free(filename);
free(filename);
} }
for (i = 0; i < options->filecnt; i++) { for (i = 0; i < options->filecnt; i++) {

View file

@ -176,8 +176,7 @@ void tns_init(tns_t *tns, const fileinfo_t *files, int cnt, int *sel, win_t *win
dsuffix = "/.cache"; dsuffix = "/.cache";
} }
if (homedir != NULL) { if (homedir != NULL) {
if (cache_dir != NULL) free(cache_dir);
free(cache_dir);
len = strlen(homedir) + strlen(dsuffix) + 6; len = strlen(homedir) + strlen(dsuffix) + 6;
cache_dir = (char*) s_malloc(len); cache_dir = (char*) s_malloc(len);
snprintf(cache_dir, len, "%s%s/sxiv", homedir, dsuffix); snprintf(cache_dir, len, "%s%s/sxiv", homedir, dsuffix);
@ -204,10 +203,8 @@ void tns_free(tns_t *tns)
tns->thumbs = NULL; tns->thumbs = NULL;
} }
if (cache_dir != NULL) { free(cache_dir);
free(cache_dir); cache_dir = NULL;
cache_dir = NULL;
}
} }
bool tns_load(tns_t *tns, int n, bool force) bool tns_load(tns_t *tns, int n, bool force)

17
util.c
View file

@ -198,18 +198,13 @@ char* absolute_path(const char *filename)
goto end; goto end;
error: error:
if (path != NULL) { free(path);
free(path); path = NULL;
path = NULL;
}
end: end:
if (dirname != NULL) free(dirname);
free(dirname); free(cwd);
if (cwd != NULL) free(twd);
free(cwd);
if (twd != NULL)
free(twd);
return path; return path;
} }
@ -254,7 +249,7 @@ int r_closedir(r_dir_t *rdir)
rdir->dir = NULL; rdir->dir = NULL;
} }
if (rdir->d != 0 && rdir->name != NULL) { if (rdir->d != 0) {
free(rdir->name); free(rdir->name);
rdir->name = NULL; rdir->name = NULL;
} }