Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenloader/intern/writefile.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 4ac49d5aebb..47e6643c180 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -454,11 +454,14 @@ static void mywrite_id_begin(WriteData *wd, ID *id)
if (wd->use_memfile) {
wd->mem.current_id_session_uuid = id->session_uuid;
- /* If current next memchunk does not match the ID we are about to write, try to find the
- * correct memchunk in the mapping using ID's session_uuid. */
+ /* If current next memchunk does not match the ID we are about to write, or is not the _first_
+ * one for said ID, try to find the correct memchunk in the mapping using ID's session_uuid. */
+ MemFileChunk *curr_memchunk = wd->mem.reference_current_chunk;
+ MemFileChunk *prev_memchunk = curr_memchunk != NULL ? curr_memchunk->prev : NULL;
if (wd->mem.id_session_uuid_mapping != NULL &&
- (wd->mem.reference_current_chunk == NULL ||
- wd->mem.reference_current_chunk->id_session_uuid != id->session_uuid)) {
+ (curr_memchunk == NULL || curr_memchunk->id_session_uuid != id->session_uuid ||
+ (prev_memchunk != NULL &&
+ (prev_memchunk->id_session_uuid == curr_memchunk->id_session_uuid)))) {
void *ref = BLI_ghash_lookup(wd->mem.id_session_uuid_mapping,
POINTER_FROM_UINT(id->session_uuid));
if (ref != NULL) {