diff --git a/direct/src/dcparser/dcPacker.I b/direct/src/dcparser/dcPacker.I index 6b6ef79ee57..c9212b3302d 100644 --- a/direct/src/dcparser/dcPacker.I +++ b/direct/src/dcparser/dcPacker.I @@ -1124,7 +1124,9 @@ operator new(size_t size) { */ INLINE void DCPacker::StackElement:: operator delete(void *ptr) { - StackElement *obj = (StackElement *)ptr; - obj->_next = _deleted_chain; - _deleted_chain = obj; + if (ptr != nullptr) { + StackElement *obj = (StackElement *)ptr; + obj->_next = _deleted_chain; + _deleted_chain = obj; + } } diff --git a/dtool/src/dtoolbase/deletedChain.h b/dtool/src/dtoolbase/deletedChain.h index 1915223450b..a72bc85f967 100644 --- a/dtool/src/dtoolbase/deletedChain.h +++ b/dtool/src/dtoolbase/deletedChain.h @@ -85,7 +85,9 @@ class StaticDeletedChain { return ptr; \ } \ inline void operator delete(void *ptr) { \ - StaticDeletedChain< Type >::deallocate((Type *)ptr, get_type_handle(Type)); \ + if (ptr != nullptr) { \ + StaticDeletedChain< Type >::deallocate((Type *)ptr, get_type_handle(Type)); \ + } \ } \ inline void operator delete(void *, void *) { \ } \ @@ -104,7 +106,9 @@ class StaticDeletedChain { return ptr; \ } \ inline void operator delete(void *ptr) { \ - _deleted_chain.deallocate((Type *)ptr, get_type_handle(Type)); \ + if (ptr != nullptr) { \ + _deleted_chain.deallocate((Type *)ptr, get_type_handle(Type)); \ + } \ } \ inline void operator delete(void *, void *) { \ } \ diff --git a/dtool/src/dtoolbase/memoryBase.h b/dtool/src/dtoolbase/memoryBase.h index d1d9f00ca57..b82e9d1cc0c 100644 --- a/dtool/src/dtoolbase/memoryBase.h +++ b/dtool/src/dtoolbase/memoryBase.h @@ -32,7 +32,9 @@ return ptr; \ } \ inline void operator delete(void *ptr) { \ - PANDA_FREE_SINGLE(ptr); \ + if (ptr != nullptr) { \ + PANDA_FREE_SINGLE(ptr); \ + } \ } \ inline void operator delete(void *, void *) { \ } \ @@ -44,7 +46,9 @@ return ptr; \ } \ inline void operator delete[](void *ptr) { \ - PANDA_FREE_ARRAY(ptr); \ + if (ptr != nullptr) { \ + PANDA_FREE_ARRAY(ptr); \ + } \ } \ inline void operator delete[](void *, void *) { \ }