| 12345678910111213141516171819202122 |
- #include "memset_s.h"
- #define RSIZE_MAX 0x7fffffffffffffffUL
- errno_t memset_s(void* s, rsize_t smax, int c, rsize_t n) {
- if(!s || smax > RSIZE_MAX) {
- return EINVAL;
- }
- errno_t violation_present = 0;
- if(n > smax) {
- n = smax;
- violation_present = EINVAL;
- }
- volatile unsigned char* v = s;
- for(rsize_t i = 0u; i < n; ++i) {
- *v++ = (unsigned char)c;
- }
- return violation_present;
- }
|