diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 21a2d776232..9122e01fb2a 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -4052,7 +4052,16 @@ static void lib_link_object(FileData *fd, Main *main) warn = 1; if (ob->pose) { + /* we can't call #BKE_pose_free() here because of library linking + * freeing will recurse down into every pose constraints ID pointers + * which are not always valid, so for now free directly and suffer + * some leaked memory rather then crashing immediately + * while bad this _is_ an exceptional case - campbell */ +#if 0 BKE_pose_free(ob->pose); +#else + MEM_freeN(ob->pose); +#endif ob->pose= NULL; ob->mode &= ~OB_MODE_POSE; } diff --git a/source/blender/compositor/intern/COM_MemoryManagerState.cpp b/source/blender/compositor/intern/COM_MemoryManagerState.cpp index b40ae146f9e..6098bf15569 100644 --- a/source/blender/compositor/intern/COM_MemoryManagerState.cpp +++ b/source/blender/compositor/intern/COM_MemoryManagerState.cpp @@ -45,7 +45,7 @@ MemoryManagerState::~MemoryManagerState() delete buffer; } } - delete this->chunkBuffers; + delete [] this->chunkBuffers; BLI_mutex_end(&this->mutex); }