diff --git a/src/renderer/tvgSaver.cpp b/src/renderer/tvgSaver.cpp index 11eb24d4..068b5ee6 100644 --- a/src/renderer/tvgSaver.cpp +++ b/src/renderer/tvgSaver.cpp @@ -22,6 +22,7 @@ #include "tvgCommon.h" #include "tvgSaveModule.h" +#include "tvgPaint.h" #ifdef THORVG_TVG_SAVER_SUPPORT #include "tvgTvgSaver.h" @@ -123,7 +124,7 @@ Result Saver::save(std::unique_ptr paint, const string& path, bool compre //Already on saving an other resource. if (pImpl->saveModule) { - delete(p); + if (P(p)->refCnt == 0) delete(p); return Result::InsufficientCondition; } @@ -132,12 +133,12 @@ Result Saver::save(std::unique_ptr paint, const string& path, bool compre pImpl->saveModule = saveModule; return Result::Success; } else { - delete(p); + if (P(p)->refCnt == 0) delete(p); delete(saveModule); return Result::Unknown; } } - delete(p); + if (P(p)->refCnt == 0) delete(p); return Result::NonSupport; }