diff --git a/software/libbase/libc.c b/software/libbase/libc.c index 78e3823fe..d0667f1cd 100644 --- a/software/libbase/libc.c +++ b/software/libbase/libc.c @@ -265,6 +265,13 @@ void *memcpy(void *to, const void *from, size_t n) from = cfrom; n--; } + if((long)from & 1) { + char *cto = to; + const char *cfrom = from; + for (; n; n--) + *cto++ = *cfrom++; + return xto; + } if(n > 2 && (long)to & 2) { short *sto = to; const short *sfrom = from; @@ -278,7 +285,7 @@ void *memcpy(void *to, const void *from, size_t n) long *lto = to; const long *lfrom = from; for(; temp; temp--) - *lto++ = *lfrom++; + *lto++ = *lfrom++; to = lto; from = lfrom; }