diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2007-04-09 16:03:26 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2007-04-09 16:03:26 +0000 |
commit | abe43f42627868d7ed3f73900a47be56615bc247 (patch) | |
tree | 1b65dd773a5d6c492fcd69ab5bc386d9c71707d0 /newlib/libc | |
parent | 69de39769d6ce4691fac5788842e090c69153c75 (diff) | |
download | newlib-abe43f42627868d7ed3f73900a47be56615bc247.zip newlib-abe43f42627868d7ed3f73900a47be56615bc247.tar.gz newlib-abe43f42627868d7ed3f73900a47be56615bc247.tar.bz2 |
2007-04-09 Joel Schopp <jschopp@austin.ibm.com>
* libc/machine/spu/strxfrm.c: Fix strxfrm so we still copy data
even if the passed in length n is shorter than the source string.
This matches both the non-spu specific and the glibc strxfrm
behaviour.
Diffstat (limited to 'newlib/libc')
-rw-r--r-- | newlib/libc/machine/spu/strxfrm.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/newlib/libc/machine/spu/strxfrm.c b/newlib/libc/machine/spu/strxfrm.c index 6d449ed..02bb9a8 100644 --- a/newlib/libc/machine/spu/strxfrm.c +++ b/newlib/libc/machine/spu/strxfrm.c @@ -34,6 +34,7 @@ #include <stddef.h> #include <string.h> +#define min(a, b) (a) < (b) ? (a) : (b) /* The strxfrm() function transforms the src string into a form such that * the result of strcmp() on two strings that have been transformed with @@ -54,13 +55,7 @@ size_t strxfrm(char * __restrict__ dest, const char * __restrict__ src, size_t n size_t len; len = strlen(src); + (void)memcpy((void *)dest, (void *)src, min(n,len + 1)); - /* Since the destination is indeterminant if n is less than of equal - * to the string length, we skip performing the copy (altogether) in - * this case. - */ - if (n > len) { - (void)memcpy((void *)dest, (void *)src, n); - } - return (len); + return len; } |