summaryrefslogtreecommitdiff
path: root/src/kernels.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernels.h')
-rw-r--r--src/kernels.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/kernels.h b/src/kernels.h
index 45d25b7..57066c0 100644
--- a/src/kernels.h
+++ b/src/kernels.h
@@ -208,9 +208,14 @@ static inline TERM_ALWAYS_INLINE void bytes_copy_small(uint8_t *restrict dst,
memcpy(&b, src + n - 4, 4);
memcpy(dst, &a, 4);
memcpy(dst + n - 4, &b, 4);
- } else {
- for (int k = 0; k < n; k++)
- dst[k] = (uint8_t)src[k];
+ } else if (n >= 2) {
+ uint16_t a, b;
+ memcpy(&a, src, 2);
+ memcpy(&b, src + n - 2, 2);
+ memcpy(dst, &a, 2);
+ memcpy(dst + n - 2, &b, 2);
+ } else if (n == 1) {
+ dst[0] = (uint8_t)src[0];
}
}