chunk_t chunk;
unsigned sz = sizeof(chunk);
if (len < sz) {
- do {
+ while (len != 0) {
*out++ = *from++;
--len;
- } while (len != 0);
+ }
return out;
}
}
Z_INTERNAL uint8_t* CHUNKMEMSET_SAFE(uint8_t *out, unsigned dist, unsigned len, unsigned left) {
+#if !defined(UNALIGNED64_OK)
+# if !defined(UNALIGNED_OK)
+ static const uint32_t align_mask = 7;
+# else
+ static const uint32_t align_mask = 3;
+# endif
+#endif
+
len = MIN(len, left);
+ uint8_t *from = out - dist;
+#if !defined(UNALIGNED64_OK)
+ while (((uintptr_t)out & align_mask) && (len > 0)) {
+ *out++ = *from++;
+ --len;
+ --left;
+ }
+#endif
if (left < (unsigned)(3 * sizeof(chunk_t))) {
- uint8_t *from = out - dist;
while (len > 0) {
*out++ = *from++;
--len;