message: Fixed incorrect IM_DELETE macro (9cda86d55a80c9f032af84f657b9fe8e6c7f3f52)
diff: @@ -160,14 +160,12 @@ static inline ImVec2 ImMul(const ImVec2& lhs, const ImVec2& rhs)
  // We call C++ constructor on own allocated memory via the placement "new(ptr) Type()" syntax.
  // Defining a custom placement new() with a dummy parameter allows us to bypass including <new> which on some platforms complains when user has disabled exceptions.
  -struct ImNewAllocDummy {};
  struct ImNewPlacementDummy {};
  inline void* operator new(size_t, ImNewPlacementDummy, void* ptr) { return ptr; }
  inline void operator delete(void*, ImNewPlacementDummy, void*) {} // This is only required so we can use the symetrical new()
  -inline void operator delete(void* p, ImNewAllocDummy) { ImGui::MemFree(p); }
  #define IM_PLACEMENT_NEW(_PTR) new(ImNewPlacementDummy(), _PTR)
  #define IM_NEW(_TYPE) new(ImNewPlacementDummy(), ImGui::MemAlloc(sizeof(_TYPE))) _TYPE
  -#define IM_DELETE(_PTR) delete(ImNewAllocDummy(), _PTR), _PTR = NULL
  +template <typename T> void IM_DELETE(T*& p) { if (p) { p->~T(); ImGui::MemFree(p); p = NULL; } }
  //-----------------------------------------------------------------------------
  // Types
  