diff options
Diffstat (limited to 'include/llvm/Bitcode')
-rw-r--r-- | include/llvm/Bitcode/Deserialize.h | 4 | ||||
-rw-r--r-- | include/llvm/Bitcode/Serialize.h | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/include/llvm/Bitcode/Deserialize.h b/include/llvm/Bitcode/Deserialize.h index f5adcffe25..164c70a9af 100644 --- a/include/llvm/Bitcode/Deserialize.h +++ b/include/llvm/Bitcode/Deserialize.h @@ -86,6 +86,10 @@ public: template <typename T> inline T* ReadOwnedPtr() { unsigned PtrId = ReadInt(); + + if (PtrId == 0) + return NULL; + T* x = SerializeTrait<T>::Materialize(*this); RegisterPtr(PtrId,x); return x; diff --git a/include/llvm/Bitcode/Serialize.h b/include/llvm/Bitcode/Serialize.h index dc1fe646f2..72aac9d0ba 100644 --- a/include/llvm/Bitcode/Serialize.h +++ b/include/llvm/Bitcode/Serialize.h @@ -47,7 +47,7 @@ public: template <typename T> void EmitOwnedPtr(T* ptr) { EmitPtr(ptr); - SerializeTrait<T>::Emit(*this,*ptr); + if (ptr) SerializeTrait<T>::Emit(*this,*ptr); } void Flush() { if (inRecord()) EmitRecord(); } |