exp2l: Work around a NetBSD 10.0/i386 bug.
[gnulib.git] / lib / memmove.c
blob0d80de69c214fed451ad9cffec38665dc707d00b
1 /* memmove.c -- copy memory.
2 This file is in the public domain. */
4 /* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
6 #include <config.h>
8 #include <stddef.h>
10 /* Copy LENGTH bytes from SOURCE to DEST. Does not null-terminate. */
12 void *
13 memmove (void *dest0, void const *source0, size_t length)
15 char *dest = dest0;
16 char const *source = source0;
17 if (source < dest)
18 /* Moving from low mem to hi mem; start at end. */
19 for (source += length, dest += length; length; --length)
20 *--dest = *--source;
21 else if (source != dest)
23 /* Moving from hi mem to low mem; start at beginning. */
24 for (; length; --length)
25 *dest++ = *source++;
27 return dest0;