blob: 2b5ebec789471826c3238b7d584f3f2de16d8d0e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#include <string.h>
#include "_safety.h"
/** copy memory **/
errno_t memcpy_s(void * restrict s1, rsize_t s1max, const void * restrict s2, rsize_t n)
{
SIGNAL_SAFE(0);
ASSERT_NONNULL(s1);
ASSERT_NONNULL(s2);
ASSERT_NOOVERLAP(s1, s1max, s2, n);
char *dst = (char*)s1, *src = (char*)s2;
rsize_t i = 0;
while (i < n) {
dst[i] = src[i];
i++;
}
return 0;
}
CHECK_4(errno_t, 0, memcpy_s, void * restrict, rsize_t, const void * restrict, rsize_t)
/***
The fn(memcpy) copies arg(n) bytes from the object at arg(s2) to the object at
arg(s1).
***/
/* UNSPECIFIED: - */
/* UNDEFINED: if the objects overlap */
/* IMPLEMENTATION: - */
/* LOCALE: - */
/* RETURN: the value of arg(s1) */
/*
CEXT1(201112)
*/
|