diff options
Diffstat (limited to 'src/debug/demangle.cpp')
| -rw-r--r-- | src/debug/demangle.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/debug/demangle.cpp b/src/debug/demangle.cpp index 28b5d26d4..60e1f176d 100644 --- a/src/debug/demangle.cpp +++ b/src/debug/demangle.cpp @@ -13,9 +13,10 @@ #include <cstdio> #include <cstring> #include <map> +#include <memory> +#include <string> #include "debug/demangle.h" #include "util/format.h" -#include "inkgc/gc-alloc.h" namespace Inkscape { @@ -46,23 +47,19 @@ struct string_less_than { } }; -typedef std::map<char const *, char const *, string_less_than> MangleCache; +typedef std::map<char const *, std::shared_ptr<std::string>, string_less_than> MangleCache; MangleCache mangle_cache; } -Util::ptr_shared demangle(char const *name) { +std::shared_ptr<std::string> demangle(char const *name) { MangleCache::iterator found=mangle_cache.find(name); - - char const *result; if ( found != mangle_cache.end() ) { - result = (*found).second; - } else { - result = demangle_helper(name); - mangle_cache[name] = result; + return (*found).second; } - return Util::share_unsafe(result); + char const *result = demangle_helper(name); + return mangle_cache[name] = std::make_shared<std::string>(result); } } |
