| 238 | } |
| 239 | |
| 240 | void memdup(void* dst, const void* src, size_t size, size_t count) noexcept |
| 241 | { |
| 242 | size_t copied = 1; |
| 243 | memcpy(dst, src, size); |
| 244 | while (copied <= count / 2) |
| 245 | { |
| 246 | memcpy((char*)dst + copied * size, dst, copied * size); |
| 247 | copied *= 2; |
| 248 | } |
| 249 | if (copied < count) |
| 250 | memcpy((char*)dst + copied * size, dst, (count - copied) * size); |
| 251 | } |
| 252 | |
| 253 | static void duplicate_impl(sugoi_chunk_view_t dstV, const sugoi_chunk_t* srcC, uint32_t srcIndex, type_index_t type, EIndex offset, EIndex dstOffset, uint32_t size, uint32_t align, uint32_t elemSize, resource_fields_t resourceFields, void (*copy)(sugoi_chunk_t* chunk, EIndex index, char* dst, sugoi_chunk_t* schunk, EIndex sindex, const char* src)) |
| 254 | { |
no test coverage detected