diff --git a/src/renderer/tvgLoader.cpp b/src/renderer/tvgLoader.cpp index 562102dd..dea650bf 100644 --- a/src/renderer/tvgLoader.cpp +++ b/src/renderer/tvgLoader.cpp @@ -267,7 +267,11 @@ bool LoaderMgr::term() auto loader = _activeLoaders.head; //clean up the remained font loaders which is globally used. - while (loader && loader->type == FileType::Ttf) { + while (loader) { + if (loader->type != FileType::Ttf) { + loader = loader->next; + continue; + } auto ret = loader->close(); auto tmp = loader; loader = loader->next; diff --git a/src/renderer/tvgText.cpp b/src/renderer/tvgText.cpp index a09bb302..2b2aea31 100644 --- a/src/renderer/tvgText.cpp +++ b/src/renderer/tvgText.cpp @@ -62,7 +62,11 @@ Result Text::load(const std::string& path) noexcept { #ifdef THORVG_FILE_IO_SUPPORT bool invalid; //invalid path - if (!LoaderMgr::loader(path, &invalid)) { + auto loader = LoaderMgr::loader(path, &invalid); + if (loader) { + if (loader->sharing > 0) --loader->sharing; //font loading doesn't mean sharing. + return Result::Success; + } else { if (invalid) return Result::InvalidArguments; else return Result::NonSupport; }