diff options
-rw-r--r-- | ChangeLog | 18 | ||||
-rwxr-xr-x | configure | 2 | ||||
-rw-r--r-- | configure.in | 3 | ||||
-rw-r--r-- | iconvdata/iso-2022-jp.c | 108 | ||||
-rw-r--r-- | manual/lang.texi | 2 | ||||
-rw-r--r-- | string/bits/string2.h | 4 |
6 files changed, 82 insertions, 55 deletions
@@ -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 @@ -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 3501f85..f763792 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 5e4ddaa..18a89cd 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 ecde184..9f5c540 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 da168fa..a02b055 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). |