]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
replace memcpy with std::copy 267/head
authorKonstantinos Margaritis <konstantinos@vectorcamp.gr>
Sat, 11 May 2024 15:47:00 +0000 (18:47 +0300)
committerKonstantinos Margaritis <konstantinos@vectorcamp.gr>
Sat, 11 May 2024 15:47:00 +0000 (18:47 +0300)
src/rose/rose_build_scatter.cpp

index a697f6dbb878ed7454a2f36b05c78578aeeb9cb6..f7a457b6b55506e8d039fa8672bef8a76aa3c92d 100644 (file)
@@ -115,28 +115,36 @@ void write_out(scatter_full_plan *plan_out, void *aux_out,
         plan_out->s_u64a_offset = aux_base_offset;
         plan_out->s_u64a_count = raw.p_u64a.size();
         assert(ISALIGNED_N(static_cast<char *>(aux_out) + aux_base_offset, alignof(scatter_unit_u64a)));
-        memcpy(static_cast<char *>(aux_out) + aux_base_offset, raw.p_u64a.data(), byte_length(raw.p_u32));
+       auto *start = reinterpret_cast<const char *>(raw.p_u64a.data());
+       auto *to = static_cast<char *>(aux_out) + aux_base_offset;
+       std::copy(start, start + byte_length(raw.p_u64a), to);
         aux_base_offset += byte_length(raw.p_u64a);
     }
     if (!raw.p_u32.empty()) {
         plan_out->s_u32_offset = aux_base_offset;
         plan_out->s_u32_count = raw.p_u32.size();
         assert(ISALIGNED_N(static_cast<char *>(aux_out) + aux_base_offset, alignof(scatter_unit_u32)));
-        memcpy(static_cast<char *>(aux_out) + aux_base_offset, raw.p_u32.data(), byte_length(raw.p_u32));
+       auto *start = reinterpret_cast<const char *>(raw.p_u32.data());
+       auto *to = static_cast<char *>(aux_out) + aux_base_offset;
+       std::copy(start, start + byte_length(raw.p_u32), to);
         aux_base_offset += byte_length(raw.p_u32);
     }
     if (!raw.p_u16.empty()) {
         plan_out->s_u16_offset = aux_base_offset;
         plan_out->s_u16_count = raw.p_u16.size();
         assert(ISALIGNED_N(static_cast<char *>(aux_out) + aux_base_offset, alignof(scatter_unit_u16)));
-        memcpy(static_cast<char *>(aux_out) + aux_base_offset, raw.p_u16.data(), byte_length(raw.p_u16));
+       auto *start = reinterpret_cast<const char *>(raw.p_u16.data());
+       auto *to = static_cast<char *>(aux_out) + aux_base_offset;
+       std::copy(start, start + byte_length(raw.p_u16), to);
         aux_base_offset += byte_length(raw.p_u16);
     }
     if (!raw.p_u8.empty()) {
         plan_out->s_u8_offset = aux_base_offset;
         plan_out->s_u8_count = raw.p_u8.size();
         assert(ISALIGNED_N(static_cast<char *>(aux_out) + aux_base_offset, alignof(scatter_unit_u8)));
-        memcpy(static_cast<char *>(aux_out) + aux_base_offset, raw.p_u8.data(), byte_length(raw.p_u8));
+       auto *start = reinterpret_cast<const char *>(raw.p_u8.data());
+       auto *to = static_cast<char *>(aux_out) + aux_base_offset;
+       std::copy(start, start + byte_length(raw.p_u8), to);
     }
 }