about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog18
-rwxr-xr-xconfigure2
-rw-r--r--configure.in3
-rw-r--r--iconvdata/iso-2022-jp.c108
-rw-r--r--manual/lang.texi2
-rw-r--r--string/bits/string2.h4
6 files changed, 82 insertions, 55 deletions
diff --git a/ChangeLog b/ChangeLog
index 471f60fd2d..e4d2743d61 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2002-05-27  Alexandre Oliva  <aoliva@redhat.com>
+
+	* configure.in (DO_STATIC_NSS): Define if --disable-shared.
+
+2002-05-26  Bruno Haible  <bruno@clisp.org>
+
+	* iconvdata/iso-2022-jp.c (BODY for TO_LOOP): Avoid running off the
+	end of the ISO-8859-7 from idx table.
+
+2002-05-27  Ulrich Drepper  <drepper@redhat.com>
+
+	* manual/lang.texi: Fix FLT_EPSILON description [PR libc/3649].
+
+2002-05-24  David S. Miller  <davem@redhat.com>
+
+	* string/bits/string2.h (memset): Do not try to optimize when
+	not _STRING_ARCH_unaligned if GCC will do the right thing.
+
 2002-05-21  Isamu Hasegawa  <isamu@yamato.ibm.com>
 
 	* posix/regex.c: Define `inline' as a macro into nothing for the
diff --git a/configure b/configure
index bb663a7983..27f2e23969 100755
--- a/configure
+++ b/configure
@@ -860,7 +860,7 @@ else
   static_nss=no
 fi
 
-if test x"$static_nss" = xyes; then
+if test x"$static_nss" = xyes || test x"$shared" = xno; then
   cat >> confdefs.h <<\EOF
 #define DO_STATIC_NSS 1
 EOF
diff --git a/configure.in b/configure.in
index 3501f858c0..f763792750 100644
--- a/configure.in
+++ b/configure.in
@@ -177,7 +177,8 @@ dnl static NSS modules.
 AC_ARG_ENABLE(static-nss, dnl
 [  --enable-static-nss     build static NSS modules [default=no]],
 	      static_nss=$enableval, static_nss=no)
-if test x"$static_nss" = xyes; then
+dnl Enable static NSS also if we build no shared objects.
+if test x"$static_nss" = xyes || test x"$shared" = xno; then
   AC_DEFINE(DO_STATIC_NSS)
 fi
 
diff --git a/iconvdata/iso-2022-jp.c b/iconvdata/iso-2022-jp.c
index 5e4ddaa441..18a89cd16a 100644
--- a/iconvdata/iso-2022-jp.c
+++ b/iconvdata/iso-2022-jp.c
@@ -708,25 +708,29 @@ static const cvlist_t conversion_lists[4] =
 	  }								      \
 	else if (set2 == ISO88597_set)					      \
 	  {								      \
-	    const struct gap *rp = from_idx;				      \
-									      \
-	    while (ch > rp->end)					      \
-	      ++rp;							      \
-	    if (ch >= rp->start)					      \
+	    if (__builtin_expect (ch < 0xffff, 1))			      \
 	      {								      \
-		unsigned char res = iso88597_from_ucs4[ch - 0xa0 + rp->idx];  \
-		if (res != '\0')					      \
+		const struct gap *rp = from_idx;			      \
+									      \
+		while (ch > rp->end)					      \
+		  ++rp;							      \
+		if (ch >= rp->start)					      \
 		  {							      \
-		    if (__builtin_expect (outptr + 3 > outend, 0))	      \
+		    unsigned char res =					      \
+		      iso88597_from_ucs4[ch - 0xa0 + rp->idx];		      \
+		    if (res != '\0')					      \
 		      {							      \
-			result = __GCONV_FULL_OUTPUT;			      \
-			break;						      \
-		      }							      \
+			if (__builtin_expect (outptr + 3 > outend, 0))	      \
+			  {						      \
+			    result = __GCONV_FULL_OUTPUT;		      \
+			    break;					      \
+			  }						      \
 									      \
-		    *outptr++ = ESC;					      \
-		    *outptr++ = 'N';					      \
-		    *outptr++ = res;					      \
-		    written = 3;					      \
+			*outptr++ = ESC;				      \
+			*outptr++ = 'N';				      \
+			*outptr++ = res;				      \
+			written = 3;					      \
+		      }							      \
 		  }							      \
 	      }								      \
 	  }								      \
@@ -817,43 +821,45 @@ static const cvlist_t conversion_lists[4] =
 		    }							      \
 									      \
 		  /* Try ISO 8859-7 upper half.  */			      \
-		  {							      \
-		    const struct gap *rp = from_idx;			      \
+		  if (__builtin_expect (ch < 0xffff, 1))		      \
+		    {							      \
+		      const struct gap *rp = from_idx;			      \
 									      \
-		    while (ch > rp->end)				      \
-		      ++rp;						      \
-		    if (ch >= rp->start)				      \
-		      {							      \
-			unsigned char res =				      \
-			  iso88597_from_ucs4[ch - 0xa0 + rp->idx];	      \
-			if (res != '\0')				      \
-			  {						      \
-			    if (set2 != ISO88597_set)			      \
-			      {						      \
-				if (__builtin_expect (outptr + 3 > outend, 0))\
-				  {					      \
-				    result = __GCONV_FULL_OUTPUT;	      \
-				    break;				      \
-				  }					      \
-				*outptr++ = ESC;			      \
-				*outptr++ = '.';			      \
-				*outptr++ = 'F';			      \
-				set2 = ISO88597_set;			      \
-			      }						      \
-									      \
-			    if (__builtin_expect (outptr + 3 > outend, 0))    \
-			      {						      \
-				result = __GCONV_FULL_OUTPUT;		      \
-				break;					      \
-			      }						      \
-			    *outptr++ = ESC;				      \
-			    *outptr++ = 'N';				      \
-			    *outptr++ = res;				      \
-			    result = __GCONV_OK;			      \
-			    break;					      \
-			  }						      \
-		      }							      \
-		  }							      \
+		      while (ch > rp->end)				      \
+			++rp;						      \
+		      if (ch >= rp->start)				      \
+			{						      \
+			  unsigned char res =				      \
+			    iso88597_from_ucs4[ch - 0xa0 + rp->idx];	      \
+			  if (res != '\0')				      \
+			    {						      \
+			      if (set2 != ISO88597_set)			      \
+				{					      \
+				  if (__builtin_expect (outptr + 3 > outend,  \
+							0))		      \
+				    {					      \
+				      result = __GCONV_FULL_OUTPUT;	      \
+				      break;				      \
+				    }					      \
+				  *outptr++ = ESC;			      \
+				  *outptr++ = '.';			      \
+				  *outptr++ = 'F';			      \
+				  set2 = ISO88597_set;			      \
+				}					      \
+									      \
+			      if (__builtin_expect (outptr + 3 > outend, 0))  \
+				{					      \
+				  result = __GCONV_FULL_OUTPUT;		      \
+				  break;				      \
+				}					      \
+			      *outptr++ = ESC;				      \
+			      *outptr++ = 'N';				      \
+			      *outptr++ = res;				      \
+			      result = __GCONV_OK;			      \
+			      break;					      \
+			    }						      \
+			}						      \
+		    }							      \
 									      \
 		  break;						      \
 									      \
diff --git a/manual/lang.texi b/manual/lang.texi
index ecde184c79..9f5c540735 100644
--- a/manual/lang.texi
+++ b/manual/lang.texi
@@ -1202,7 +1202,7 @@ macro's value is the same as the type it describes.
 @comment ISO
 @item FLT_EPSILON
 
-This is the maximum positive floating point number of type @code{float}
+This is the minimum positive floating point number of type @code{float}
 such that @code{1.0 + FLT_EPSILON != 1.0} is true.  It's supposed to
 be no greater than @code{1E-5}.
 
diff --git a/string/bits/string2.h b/string/bits/string2.h
index da168facc2..a02b0558f1 100644
--- a/string/bits/string2.h
+++ b/string/bits/string2.h
@@ -178,10 +178,12 @@ __STRING2_COPY_TYPE (8);
 									      \
      __s; })
 # else
-#  define memset(s, c, n) \
+#  if ! __GNUC_PREREQ (3, 0)
+#   define memset(s, c, n) \
   (__extension__ (__builtin_constant_p (c) && (c) == '\0'		      \
 		  ? ({ void *__s = (s); __bzero (__s, n); __s; })	      \
 		  : memset (s, c, n)))
+#  endif
 # endif
 
 /* GCC optimizes memset(s, 0, n) but not bzero(s, n).