* resolv/mapv4v6addr.h (map_v4v6_address): Optimize a bit.
authorUlrich Drepper <drepper@redhat.com>
Tue, 21 Nov 2006 00:33:33 +0000 (00:33 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 21 Nov 2006 00:33:33 +0000 (00:33 +0000)
ChangeLog
resolv/mapv4v6addr.h

index 7eb3ae0..f4c0a0a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2006-11-20  Ulrich Drepper  <drepper@redhat.com>
+
+       * resolv/mapv4v6addr.h (map_v4v6_address): Optimize a bit.
+
 2006-11-18  Bruno Haible  <bruno@clisp.org>
 
        * sysdeps/unix/sysv/linux/i386/getgroups.c (__getgroups): Invoke
index bc3290f..a71a6cc 100644 (file)
@@ -56,16 +56,14 @@ static void
 map_v4v6_address (const char *src, char *dst)
 {
   u_char *p = (u_char *) dst;
-  char tmp[INADDRSZ];
   int i;
 
-  /* Stash a temporary copy so our caller can update in place. */
-  memcpy (tmp, src, INADDRSZ);
+  /* Move the IPv4 part to the right position.  */
+  memcpy (src + 12, src, INADDRSZ);
+
   /* Mark this ipv6 addr as a mapped ipv4. */
   for (i = 0; i < 10; i++)
     *p++ = 0x00;
   *p++ = 0xff;
-  *p++ = 0xff;
-  /* Retrieve the saved copy and we're done. */
-  memcpy ((void *) p, tmp, INADDRSZ);
+  *p = 0xff;
 }