diff --git a/Extras/Serialize/BulletFileLoader/btBulletFile.cpp b/Extras/Serialize/BulletFileLoader/btBulletFile.cpp index 626a63a59..2ca5bd70a 100644 --- a/Extras/Serialize/BulletFileLoader/btBulletFile.cpp +++ b/Extras/Serialize/BulletFileLoader/btBulletFile.cpp @@ -179,6 +179,8 @@ void btBulletFile::parseData() } else { printf("unknown chunk\n"); + + mLibPointers.insert(dataChunk.oldPtr, (bStructHandle*)dataPtrHead); } // next please! diff --git a/src/LinearMath/btSerializer.h b/src/LinearMath/btSerializer.h index 023cb86f7..633c0d7f2 100644 --- a/src/LinearMath/btSerializer.h +++ b/src/LinearMath/btSerializer.h @@ -425,6 +425,15 @@ public: virtual void finishSerialization() { writeDNA(); + + + mTypes.clear(); + mStructs.clear(); + mTlens.clear(); + mStructReverse.clear(); + mTypeLookup.clear(); + m_chunkP.clear(); + m_nameMap.clear(); } @@ -493,6 +502,10 @@ public: { if (name) { + //don't serialize name twice + if (findPointer((void*)name)) + return; + int len = btStrLen(name); if (len) {