bug-gnulib
[Top][All Lists]
Advanced

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

[PATCH] Remove useless "if" tests before free. Deprecate "free" module.


From: Jim Meyering
Subject: [PATCH] Remove useless "if" tests before free. Deprecate "free" module.
Date: Sat, 01 Mar 2008 09:48:05 +0100

Here's a proposed patch to remove all redundant "if"-before-free
tests in the tests/ directory and in the lib/*.c files not owned
by Bruno.  It also deprecates (in comments and documentation) the
free module.  Paul ok'd that part.

Simon, this affects two files that are yours: lib/gc-gnulib.c and
lib/getaddrinfo.c.  Please let me know if this is ok with you.
If not, I'll be happy to remove them from the list.
-----

        Remove useless "if" tests before free.  Deprecate "free" module.
        * doc/posix-functions/free.texi: Mention that this
        module is no longer useful.
        * modules/free: Add comments to the same effect.
        * modules/readutmp (Depends-on): Remove free.
        * lib/save-cwd.c (free_cwd): Remove useless "if" before free.
        * lib/putenv.c (putenv): Likewise.
        * lib/gc-gnulib.c (gc_cipher_close): Likewise.
        * lib/getaddrinfo.c (freeaddrinfo): Likewise.
        * tests/test-c-strcasestr.c (main): Likewise.
        * tests/test-c-strstr.c (main): Likewise.
        * tests/test-mbscasestr1.c (main): Likewise.
        * tests/test-mbscasestr2.c (main): Likewise.
        * tests/test-mbsstr1.c (main): Likewise.
        * tests/test-mbsstr2.c (main): Likewise.
        * tests/test-memmem.c (main): Likewise.
        * tests/test-strcasestr.c (main): Likewise.
        * tests/test-striconv.c (main): Likewise.
        * tests/test-striconveh.c (main): Likewise.
        * tests/test-striconveha.c (main): Likewise.
        * tests/test-strstr.c (main): Likewise.

Signed-off-by: Jim Meyering <address@hidden>
---
 doc/posix-functions/free.texi |    5 ++++-
 lib/gc-gnulib.c               |    3 +--
 lib/getaddrinfo.c             |    2 +-
 lib/putenv.c                  |    5 ++---
 lib/save-cwd.c                |    3 +--
 modules/free                  |    5 ++++-
 modules/readutmp              |    1 -
 tests/test-c-strcasestr.c     |    6 ++----
 tests/test-c-strstr.c         |    6 ++----
 tests/test-mbscasestr1.c      |    6 ++----
 tests/test-mbscasestr2.c      |    6 ++----
 tests/test-mbsstr1.c          |    6 ++----
 tests/test-mbsstr2.c          |    6 ++----
 tests/test-memmem.c           |   12 ++++--------
 tests/test-strcasestr.c       |    6 ++----
 tests/test-striconv.c         |    3 +--
 tests/test-striconveh.c       |    6 ++----
 tests/test-striconveha.c      |    3 +--
 tests/test-strstr.c           |    6 ++----
 19 files changed, 37 insertions(+), 59 deletions(-)

diff --git a/doc/posix-functions/free.texi b/doc/posix-functions/free.texi
index a407dc2..10d95cd 100644
--- a/doc/posix-functions/free.texi
+++ b/doc/posix-functions/free.texi
@@ -9,7 +9,10 @@ Gnulib module: free
 Portability problems fixed by Gnulib:
 @itemize
 @item
-On old platforms, @code{free (NULL)} is not allowed.
+On old platforms such as SunOS4, @code{free (NULL)} fails.
+However, since all such systems are so old as to no longer
+be considered ``reasonable portability targets,''
+this module is no longer useful.
 @end itemize

 Portability problems not fixed by Gnulib:
diff --git a/lib/gc-gnulib.c b/lib/gc-gnulib.c
index 94e0880..d535d03 100644
--- a/lib/gc-gnulib.c
+++ b/lib/gc-gnulib.c
@@ -546,8 +546,7 @@ gc_cipher_close (gc_cipher_handle handle)
 {
   _gc_cipher_ctx *ctx = handle;

-  if (ctx)
-    free (ctx);
+  free (ctx);

   return GC_OK;
 }
diff --git a/lib/getaddrinfo.c b/lib/getaddrinfo.c
index aa07903..c7a1ea9 100644
--- a/lib/getaddrinfo.c
+++ b/lib/getaddrinfo.c
@@ -326,7 +326,7 @@ freeaddrinfo (struct addrinfo *ai)
       cur = ai;
       ai = ai->ai_next;

-      if (cur->ai_canonname) free (cur->ai_canonname);
+      free (cur->ai_canonname);
       free (cur);
     }
 }
diff --git a/lib/putenv.c b/lib/putenv.c
index 351b403..d0573c6 100644
--- a/lib/putenv.c
+++ b/lib/putenv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1994, 1997, 1998, 2000, 2003, 2004, 2005, 2006, 2007
+/* Copyright (C) 1991, 1994, 1997-1998, 2000, 2003-2008
    Free Software Foundation, Inc.

    NOTE: The canonical source of this file is maintained with the GNU C
@@ -122,8 +122,7 @@ putenv (char *string)
                     size * sizeof (char *));
       new_environ[size] = (char *) string;
       new_environ[size + 1] = NULL;
-      if (last_environ != NULL)
-       free (last_environ);
+      free (last_environ);
       last_environ = new_environ;
       environ = new_environ;
     }
diff --git a/lib/save-cwd.c b/lib/save-cwd.c
index 7618f09..e158e8b 100644
--- a/lib/save-cwd.c
+++ b/lib/save-cwd.c
@@ -97,6 +97,5 @@ free_cwd (struct saved_cwd *cwd)
 {
   if (cwd->desc >= 0)
     close (cwd->desc);
-  if (cwd->name)
-    free (cwd->name);
+  free (cwd->name);
 }
diff --git a/modules/free b/modules/free
index 94b6a3a..7e4f18f 100644
--- a/modules/free
+++ b/modules/free
@@ -1,5 +1,9 @@
 Description:
 Work around incompatibility on older systems where free (NULL) fails.
+# Note: as of 2008, this module is no longer useful, since no
+# "reasonable portability target" (which excludes SunOS4) system
+# requires the wrapper.
+# FIXME: mark as obsolescent

 Files:
 lib/free.c
@@ -20,4 +24,3 @@ GPL

 Maintainer:
 Paul Eggert
-
diff --git a/modules/readutmp b/modules/readutmp
index fd813be..4a778b8 100644
--- a/modules/readutmp
+++ b/modules/readutmp
@@ -9,7 +9,6 @@ m4/readutmp.m4
 Depends-on:
 extensions
 xalloc
-free
 stdbool

 configure.ac:
diff --git a/tests/test-c-strcasestr.c b/tests/test-c-strcasestr.c
index 012571d..b511654 100644
--- a/tests/test-c-strcasestr.c
+++ b/tests/test-c-strcasestr.c
@@ -136,10 +136,8 @@ main ()
        result = c_strcasestr (haystack, needle);
        ASSERT (result == haystack + m);
       }
-    if (needle != NULL)
-      free (needle);
-    if (haystack != NULL)
-      free (haystack);
+    free (needle);
+    free (haystack);
   }

   return 0;
diff --git a/tests/test-c-strstr.c b/tests/test-c-strstr.c
index 75b8d5d..a8682cb 100644
--- a/tests/test-c-strstr.c
+++ b/tests/test-c-strstr.c
@@ -129,10 +129,8 @@ main ()
        result = c_strstr (haystack, needle);
        ASSERT (result == haystack + m);
       }
-    if (needle != NULL)
-      free (needle);
-    if (haystack != NULL)
-      free (haystack);
+    free (needle);
+    free (haystack);
   }

   return 0;
diff --git a/tests/test-mbscasestr1.c b/tests/test-mbscasestr1.c
index c8b18bb..27abd11 100644
--- a/tests/test-mbscasestr1.c
+++ b/tests/test-mbscasestr1.c
@@ -131,10 +131,8 @@ main ()
        result = mbscasestr (haystack, needle);
        ASSERT (result == haystack + m);
       }
-    if (needle != NULL)
-      free (needle);
-    if (haystack != NULL)
-      free (haystack);
+    free (needle);
+    free (haystack);
   }

   return 0;
diff --git a/tests/test-mbscasestr2.c b/tests/test-mbscasestr2.c
index 1b9f184..a4d0848 100644
--- a/tests/test-mbscasestr2.c
+++ b/tests/test-mbscasestr2.c
@@ -143,10 +143,8 @@ main ()
        result = mbscasestr (haystack, needle);
        ASSERT (result == haystack + m);
       }
-    if (needle != NULL)
-      free (needle);
-    if (haystack != NULL)
-      free (haystack);
+    free (needle);
+    free (haystack);
   }

   return 0;
diff --git a/tests/test-mbsstr1.c b/tests/test-mbsstr1.c
index f2b1e1d..ff20485 100644
--- a/tests/test-mbsstr1.c
+++ b/tests/test-mbsstr1.c
@@ -130,10 +130,8 @@ main ()
        result = mbsstr (haystack, needle);
        ASSERT (result == haystack + m);
       }
-    if (needle != NULL)
-      free (needle);
-    if (haystack != NULL)
-      free (haystack);
+    free (needle);
+    free (haystack);
   }

   return 0;
diff --git a/tests/test-mbsstr2.c b/tests/test-mbsstr2.c
index d8699ca..014afed 100644
--- a/tests/test-mbsstr2.c
+++ b/tests/test-mbsstr2.c
@@ -143,10 +143,8 @@ main ()
        result = mbsstr (haystack, needle);
        ASSERT (result == haystack + m);
       }
-    if (needle != NULL)
-      free (needle);
-    if (haystack != NULL)
-      free (haystack);
+    free (needle);
+    free (haystack);
   }

   return 0;
diff --git a/tests/test-memmem.c b/tests/test-memmem.c
index 58043cd..656f3bb 100644
--- a/tests/test-memmem.c
+++ b/tests/test-memmem.c
@@ -152,10 +152,8 @@ main (int argc, char *argv[])
        result = memmem (haystack, 2 * m + 1, needle, m + 1);
        ASSERT (result == haystack + m);
       }
-    if (needle != NULL)
-      free (needle);
-    if (haystack != NULL)
-      free (haystack);
+    free (needle);
+    free (haystack);
   }

   /* Check that long needles not present in a haystack can be handled
@@ -179,10 +177,8 @@ main (int argc, char *argv[])
            ASSERT (result == NULL);
          }
       }
-    if (haystack != NULL)
-      free (haystack);
-    if (needle != NULL)
-      free (needle);
+    free (haystack);
+    free (needle);
   }

   return 0;
diff --git a/tests/test-strcasestr.c b/tests/test-strcasestr.c
index 9db62f1..a674719 100644
--- a/tests/test-strcasestr.c
+++ b/tests/test-strcasestr.c
@@ -144,10 +144,8 @@ main ()
        result = strcasestr (haystack, needle);
        ASSERT (result == haystack + m);
       }
-    if (needle != NULL)
-      free (needle);
-    if (haystack != NULL)
-      free (haystack);
+    free (needle);
+    free (haystack);
   }

   return 0;
diff --git a/tests/test-striconv.c b/tests/test-striconv.c
index 5c97c4a..b1252b0 100644
--- a/tests/test-striconv.c
+++ b/tests/test-striconv.c
@@ -102,8 +102,7 @@ main ()
                               &result, &length);
     ASSERT (retval == 0);
     ASSERT (length == 0);
-    if (result != NULL)
-      free (result);
+    free (result);
   }

   /* ------------------------- Test str_cd_iconv() ------------------------- */
diff --git a/tests/test-striconveh.c b/tests/test-striconveh.c
index 72e31b9..459b0f1 100644
--- a/tests/test-striconveh.c
+++ b/tests/test-striconveh.c
@@ -330,8 +330,7 @@ main ()
              ASSERT (offsets[1] == MAGIC);
              free (offsets);
            }
-         if (result != NULL)
-           free (result);
+         free (result);
        }
     }

@@ -719,8 +718,7 @@ main ()
              ASSERT (offsets[1] == MAGIC);
              free (offsets);
            }
-         if (result != NULL)
-           free (result);
+         free (result);
        }
     }

diff --git a/tests/test-striconveha.c b/tests/test-striconveha.c
index 488eec0..8c87663 100644
--- a/tests/test-striconveha.c
+++ b/tests/test-striconveha.c
@@ -313,8 +313,7 @@ main ()
              ASSERT (offsets[1] == MAGIC);
              free (offsets);
            }
-         if (result != NULL)
-           free (result);
+         free (result);
        }
     }

diff --git a/tests/test-strstr.c b/tests/test-strstr.c
index b03fcf9..be75a66 100644
--- a/tests/test-strstr.c
+++ b/tests/test-strstr.c
@@ -142,10 +142,8 @@ main (int argc, char *argv[])
        result = strstr (haystack, needle);
        ASSERT (result == haystack + m);
       }
-    if (needle != NULL)
-      free (needle);
-    if (haystack != NULL)
-      free (haystack);
+    free (needle);
+    free (haystack);
   }

   /* Sublinear speed is only possible in memmem; strstr must examine
--
1.5.4.3.341.g956c8c




reply via email to

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