diff options
| author | flyingcys <[email protected]> | 2017-11-02 11:12:55 +0800 |
|---|---|---|
| committer | flyingcys <[email protected]> | 2017-11-02 11:12:55 +0800 |
| commit | f6b71172b5ad02df522f66ef95ec2b0eb1239a29 (patch) | |
| tree | 2f14b858c7bf52af35c5bbe7cbbe162419043829 /src | |
| parent | 300888082a653c383ebf24688fc27ab23db34610 (diff) | |
fix rt_memcpy buf in RT_USING_TINY_SIZE enable
Diffstat (limited to 'src')
| -rw-r--r-- | src/kservice.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/kservice.c b/src/kservice.c index 4afea50bca..7b51f60ca3 100644 --- a/src/kservice.c +++ b/src/kservice.c @@ -220,11 +220,20 @@ void *rt_memcpy(void *dst, const void *src, rt_ubase_t count) { #ifdef RT_USING_TINY_SIZE char *tmp = (char *)dst, *s = (char *)src; + rt_ubase_t len; + + if(tmp <= s || tmp > (s + count)) + { + while (count--) + *tmp ++ = *s ++; + } + else + { + for(len = count; len > 0; len --) + tmp[len -1] = s[len - 1]; + } - while (count--) - *tmp++ = *s++; - - return dst; + return dst; #else #define UNALIGNED(X, Y) \ |
