From: Alberto Cabrera Pérez Date: Fri, 13 Feb 2026 12:32:14 +0000 (+0000) Subject: Fix wrong memcpy length for block_interleave == 4 (#19575) X-Git-Tag: upstream/0.0.8067~32 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=cc2aa81513ff8bbf8f0527ce36b9366971d5fd35;p=pkg%2Fggml%2Fsources%2Fllama.cpp Fix wrong memcpy length for block_interleave == 4 (#19575) --- diff --git a/ggml/src/ggml-cpu/repack.cpp b/ggml/src/ggml-cpu/repack.cpp index 4cb7cdeb0..f94426ddd 100644 --- a/ggml/src/ggml-cpu/repack.cpp +++ b/ggml/src/ggml-cpu/repack.cpp @@ -1916,9 +1916,10 @@ static block_q4_Kx8 make_block_q4_Kx8(block_q4_K * in, unsigned int blck_size_in int src_offset = (i / 8) * blck_size_interleave; int dst_offset = i * blck_size_interleave; + // buffer large enough for the max interleave block size (8 bytes) uint64_t elems; - memcpy(&elems, &in[src_id].qs[src_offset], sizeof(uint64_t)); - memcpy(&out.qs[dst_offset], &elems, sizeof(uint64_t)); + memcpy(&elems, &in[src_id].qs[src_offset], blck_size_interleave); + memcpy(&out.qs[dst_offset], &elems, blck_size_interleave); } // The below logic is designed so as to unpack and rearrange scales and mins values in Q4_K