Fix typo in last patch.
[kopensolaris-gnu/glibc.git] / sysdeps / i386 / i486 / bits / string.h
index ad0350e..54ff2e0 100644 (file)
 
 /* The macros are used in some of the optimized implementations below.  */
 #define __STRING_SMALL_GET16(src, idx) \
-  (((__const char *) (src))[idx + 1] << 8) | ((__const char *) (src))[idx])
+  ((((__const unsigned char *) (src))[idx + 1] << 8)                         \
+   | ((__const unsigned char *) (src))[idx])
 #define __STRING_SMALL_GET32(src, idx) \
-  (((((__const char *) (src))[idx + 3] << 8                                  \
-     | ((__const char *) (src))[idx + 2]) << 8                               \
-    | ((__const char *) (src))[idx + 1]) << 8                                \
-   | ((__const char *) (src))[idx])
+  (((((__const unsigned char *) (src))[idx + 3] << 8                         \
+     | ((__const unsigned char *) (src))[idx + 2]) << 8                              \
+    | ((__const unsigned char *) (src))[idx + 1]) << 8                       \
+   | ((__const unsigned char *) (src))[idx])
 
 
 /* Copy N bytes of SRC to DEST.  */
@@ -1644,7 +1645,7 @@ __STRING_INLINE size_t __strspn_cg (__const char *__s, __const char __accept[],
 __STRING_INLINE size_t
 __strspn_cg (__const char *__s, __const char __accept[], size_t __accept_len)
 {
-  register unsigned long int __d0, __d1, __d2, __d3;
+  register unsigned long int __d0, __d1, __d2;
   register __const char *__res;
   __asm__ __volatile__
     ("cld\n"
@@ -1652,13 +1653,13 @@ __strspn_cg (__const char *__s, __const char __accept[], size_t __accept_len)
      "lodsb\n\t"
      "testb    %%al,%%al\n\t"
      "je       2f\n\t"
-     "movl     %1,%%edi\n\t"
-     "movl     %7,%%ecx\n\t"
+     "movl     %5,%%edi\n\t"
+     "movl     %6,%%ecx\n\t"
      "repne; scasb\n\t"
      "je       1b\n"
      "2:"
-     : "=S" (__res), "=&d" (__d0), "=&c" (__d1), "=&D" (__d2), "=&a" (__d3)
-     : "0" (__s), "1" (__accept), "g" (__accept_len),
+     : "=S" (__res), "=&a" (__d0), "=&c" (__d1), "=&D" (__d2)
+     : "0" (__s), "g" (__accept), "g" (__accept_len),
        /* Since we do not know how large the memory we access it, use a
          really large amount.  */
        "m" ( *(struct { char __x[0xfffffff]; } *)__s),