changeset 11635:a395edd0f5a4

Skip linear time check if it is redundant.
author Bruno Haible <bruno@clisp.org>
date Thu, 18 Jun 2009 10:19:48 +0200
parents b0f6e24e92ac
children 95fd221d763c
files ChangeLog m4/strstr.m4
diffstat 2 files changed, 22 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-06-18  Bruno Haible  <bruno@clisp.org>
+
+	* m4/strstr.m4 (gl_FUNC_STRSTR): Skip linear time test if strstr is
+	going to be replaced anyway.
+
 2009-06-18  Bruno Haible  <bruno@clisp.org>
 
 	* m4/strcasestr.m4 (gl_FUNC_STRCASESTR_SIMPLE): Invoke AC_LIBOBJ only
--- a/m4/strstr.m4
+++ b/m4/strstr.m4
@@ -19,9 +19,10 @@
 AC_DEFUN([gl_FUNC_STRSTR],
 [
   AC_REQUIRE([gl_FUNC_STRSTR_SIMPLE])
-  AC_CACHE_CHECK([whether strstr works in linear time],
-    [gl_cv_func_strstr_linear],
-    [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+  if test $REPLACE_STRSTR = 0; then
+    AC_CACHE_CHECK([whether strstr works in linear time],
+      [gl_cv_func_strstr_linear],
+      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
 #include <signal.h> /* for signal */
 #include <string.h> /* for memmem */
 #include <stdlib.h> /* for malloc */
@@ -46,11 +47,11 @@
 	result = strstr (haystack, needle);
       }
     return !result;]])],
-      [gl_cv_func_strstr_linear=yes], [gl_cv_func_strstr_linear=no],
-      [dnl Only glibc >= 2.9 and cygwin >= 1.7.0 are known to have a
-       dnl strstr that works in linear time.
-       AC_EGREP_CPP([Lucky user],
-	 [
+        [gl_cv_func_strstr_linear=yes], [gl_cv_func_strstr_linear=no],
+        [dnl Only glibc >= 2.9 and cygwin >= 1.7.0 are known to have a
+         dnl strstr that works in linear time.
+         AC_EGREP_CPP([Lucky user],
+           [
 #include <features.h>
 #ifdef __GNU_LIBRARY__
  #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 9) || (__GLIBC__ > 2)
@@ -63,13 +64,14 @@
   Lucky user
  #endif
 #endif
-	 ],
-	 [gl_cv_func_strstr_linear=yes],
-	 [gl_cv_func_strstr_linear="guessing no"])
+           ],
+           [gl_cv_func_strstr_linear=yes],
+           [gl_cv_func_strstr_linear="guessing no"])
+        ])
       ])
-    ])
-  if test "$gl_cv_func_strstr_linear" != yes; then
-    REPLACE_STRSTR=1
-    AC_LIBOBJ([strstr])
+    if test "$gl_cv_func_strstr_linear" != yes; then
+      REPLACE_STRSTR=1
+      AC_LIBOBJ([strstr])
+    fi
   fi
 ]) # gl_FUNC_STRSTR