X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=lib%2Fstring.c;h=2c4f0ec9a11f8e7219b9c5d40659616bf4bc6aaf;hb=ba511f779a584f77b4b798fc40685bfe8d3d5163;hp=b375b8124a9a1879a831d79b8f956bf8ae8a9537;hpb=78acc472d9719316f22e002a009a998d9ceec29d;p=u-boot diff --git a/lib/string.c b/lib/string.c index b375b8124a..2c4f0ec9a1 100644 --- a/lib/string.c +++ b/lib/string.c @@ -467,6 +467,9 @@ void * memcpy(void *dest, const void *src, size_t count) unsigned long *dl = (unsigned long *)dest, *sl = (unsigned long *)src; char *d8, *s8; + if (src == dest) + return dest; + /* while all data is aligned (common case), copy a word at a time */ if ( (((ulong)dest | (ulong)src) & (sizeof(*dl) - 1)) == 0) { while (count >= sizeof(*dl)) { @@ -497,6 +500,9 @@ void * memmove(void * dest,const void *src,size_t count) { char *tmp, *s; + if (src == dest) + return dest; + if (dest <= src) { tmp = (char *) dest; s = (char *) src;