Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 4 Apr 2000 21:16:13 +0000 (21:16 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 4 Apr 2000 21:16:13 +0000 (21:16 +0000)
2000-04-04  Ulrich Drepper  <drepper@redhat.com>

* iconv/skeleton.c (FUNCTION_NAME): Reorder initialization of
unaligned so that it compiles for system which need unaligned
access handling.

ChangeLog
iconv/skeleton.c

index 31e9e19..de1cb9d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2000-04-04  Ulrich Drepper  <drepper@redhat.com>
+
+       * iconv/skeleton.c (FUNCTION_NAME): Reorder initialization of
+       unaligned so that it compiles for system which need unaligned
+       access handling.
+
 2000-04-04  Andreas Schwab  <schwab@suse.de>
 
        * elf/cache.c (print_entry): Only look at the type field when
index a7709ea..4a1c755 100644 (file)
@@ -297,36 +297,41 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
       unsigned char *outbuf = data->__outbuf;
       unsigned char *outend = data->__outbufend;
       unsigned char *outstart;
+      /* This variable is used to count the number of characters we
+        actually converted.  */
+      size_t converted = 0;
 #if defined _STRING_ARCH_unaligned \
     || MIN_NEEDED_FROM == 1 || MAX_NEEDED_FROM % MIN_NEEDED_FROM != 0 \
     || MIN_NEEDED_TO == 1 || MAX_NEEDED_TO % MIN_NEEDED_TO != 0
 # define unaligned 0
 #else
-      /* The following assumes that encodings, which have a variable length
-        what might unalign a buffer even though it is a aligned in the
-        beginning, either don't have the minimal number of bytes as a divisor
-        of the maximum length or have a minimum length of 1.  This is true
-        for all known and supported encodings.  */
-      int unaligned = ((FROM_DIRECTION
-                       && ((uintptr_t) inptr % MIN_NEEDED_FROM != 0
-                           || (data->__is_last
-                               && (uintptr_t) outbuf % MIN_NEEDED_TO != 0)))
-                      || (!FROM_DIRECTION
-                          && ((data->__is_last
-                               && (uintptr_t) outbuf % MIN_NEEDED_FROM != 0)
-                              || (uintptr_t) inptr % MIN_NEEDED_TO != 0)));
+      int unaligned;
 # define GEN_unaligned(name) GEN_unaligned2 (name)
 # define GEN_unaligned2(name) name##_unaligned
 #endif
 
-      /* This variable is used to count the number of characters we
-        actually converted.  */
-      size_t converted = 0;
-
 #ifdef PREPARE_LOOP
       PREPARE_LOOP
 #endif
 
+#if !defined _STRING_ARCH_unaligned \
+    && MIN_NEEDED_FROM != 1 && MAX_NEEDED_FROM % MIN_NEEDED_FROM == 0 \
+    && MIN_NEEDED_TO != 1 && MAX_NEEDED_TO % MIN_NEEDED_TO == 0
+      /* The following assumes that encodings, which have a variable length
+        what might unalign a buffer even though it is a aligned in the
+        beginning, either don't have the minimal number of bytes as a divisor
+        of the maximum length or have a minimum length of 1.  This is true
+        for all known and supported encodings.  */
+      unaligned = ((FROM_DIRECTION
+                   && ((uintptr_t) inptr % MIN_NEEDED_FROM != 0
+                       || (data->__is_last
+                           && (uintptr_t) outbuf % MIN_NEEDED_TO != 0)))
+                  || (!FROM_DIRECTION
+                      && ((data->__is_last
+                           && (uintptr_t) outbuf % MIN_NEEDED_FROM != 0)
+                          || (uintptr_t) inptr % MIN_NEEDED_TO != 0)));
+#endif
+
       do
        {
          /* Remember the start value for this round.  */