OSDN Git Service

1byteズレてコピーされるmemcpy()バグ修正
[mochi/master.git] / src / libraries / libc / string / memcpy.c
1 /******************************************************************************/
2 /* src/libraries/libc/string/memcpy.c                                         */
3 /*                                                                 2017/03/16 */
4 /* Copyright (C) 2017 Mochi.                                                  */
5 /******************************************************************************/
6 /******************************************************************************/
7 /* インクルード                                                               */
8 /******************************************************************************/
9 #include <stdint.h>
10 #include <string.h>
11
12
13 /******************************************************************************/
14 /* グローバル関数宣言                                                         */
15 /******************************************************************************/
16 /******************************************************************************/
17 /**
18  * @brief       memcpy
19  * @details     標準Cライブラリのmemcpy関数。
20  * 
21  * @param[in]   *s1 コピー先
22  * @param[in]   *s2 コピー元
23  * @param[in]   n   コピーサイズ
24  * 
25  * @retval      コピー先アドレス
26  */
27 /******************************************************************************/
28 void *memcpy( void       *s1,
29               const void *s2,
30               size_t     n    )
31 {
32     /* 1バイト毎に終端バイトから繰り返し */
33     while ( n > 0 ) {
34         /* コピーサイズ更新 */
35         n--;
36         
37         /* コピー値代入 */
38         *( ( uint8_t * ) s1 + n ) = *( ( uint8_t * ) s2 + n );
39     }
40     
41     return s1;
42 }
43
44
45 /******************************************************************************/