| 124 | } |
| 125 | |
| 126 | mi_decl_nodiscard mi_decl_restrict unsigned short* mi_wcsdup(const unsigned short* s) mi_attr_noexcept { |
| 127 | if (s==NULL) return NULL; |
| 128 | size_t len; |
| 129 | for(len = 0; s[len] != 0; len++) { } |
| 130 | size_t size = (len+1)*sizeof(unsigned short); |
| 131 | unsigned short* p = (unsigned short*)mi_malloc(size); |
| 132 | if (p != NULL) { |
| 133 | _mi_memcpy(p,s,size); |
| 134 | } |
| 135 | return p; |
| 136 | } |
| 137 | |
| 138 | mi_decl_nodiscard mi_decl_restrict unsigned char* mi_mbsdup(const unsigned char* s) mi_attr_noexcept { |
| 139 | return (unsigned char*)mi_strdup((const char*)s); |
no test coverage detected