From f4982b555c340348a50ee80df0a4bf11074d3b1d Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 28 Mar 2020 21:48:07 +0100 Subject: Fix undo misdetecting identical future chunk in some cases Clear is_identical_future before adding a next undo step, to avoid wrong values for cases where we undo and then add a step with different changes than what was previously the next step. Ref D7274 --- source/blender/blenloader/intern/undofile.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'source/blender/blenloader/intern/undofile.c') diff --git a/source/blender/blenloader/intern/undofile.c b/source/blender/blenloader/intern/undofile.c index 06469a0c087..69c4ba2b1f2 100644 --- a/source/blender/blenloader/intern/undofile.c +++ b/source/blender/blenloader/intern/undofile.c @@ -92,6 +92,14 @@ void BLO_memfile_merge(MemFile *first, MemFile *second) BLO_memfile_free(first); } +/* Clear is_identical_future before adding next memfile. */ +void BLO_memfile_clear_future(MemFile *memfile) +{ + for (MemFileChunk *chunk = memfile->chunks.first; chunk; chunk = chunk->next) { + chunk->is_identical_future = false; + } +} + void memfile_chunk_add(MemFile *memfile, const char *buf, uint size, MemFileChunk **compchunk_step) { MemFileChunk *curchunk = MEM_mallocN(sizeof(MemFileChunk), "MemFileChunk"); -- cgit v1.2.3