Skip to content

Commit cc2aa81

Browse files
authored
Fix wrong memcpy length for block_interleave == 4 (ggml-org#19575)
1 parent 0e21991 commit cc2aa81

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

ggml/src/ggml-cpu/repack.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1916,9 +1916,10 @@ static block_q4_Kx8 make_block_q4_Kx8(block_q4_K * in, unsigned int blck_size_in
19161916
int src_offset = (i / 8) * blck_size_interleave;
19171917
int dst_offset = i * blck_size_interleave;
19181918

1919+
// buffer large enough for the max interleave block size (8 bytes)
19191920
uint64_t elems;
1920-
memcpy(&elems, &in[src_id].qs[src_offset], sizeof(uint64_t));
1921-
memcpy(&out.qs[dst_offset], &elems, sizeof(uint64_t));
1921+
memcpy(&elems, &in[src_id].qs[src_offset], blck_size_interleave);
1922+
memcpy(&out.qs[dst_offset], &elems, blck_size_interleave);
19221923
}
19231924

19241925
// The below logic is designed so as to unpack and rearrange scales and mins values in Q4_K

0 commit comments

Comments
 (0)