Index: src/SymTab/Demangle.cc
===================================================================
--- src/SymTab/Demangle.cc	(revision 8316a49e4a7bab0431d321fe30f1e7cad58dc282)
+++ src/SymTab/Demangle.cc	(revision d7d63e5c2d12769052b5645758e31bdb0b0a4dc2)
@@ -430,4 +430,5 @@
 				if (done()) return nullptr;
 				FunctionType * ftype = new FunctionType( tq, false );
+				std::unique_ptr<Type> manager(ftype);
 				Type * retVal = parseType();
 				if (! retVal) return nullptr;
@@ -437,5 +438,5 @@
 				while (! done()) {
 					PRINT( std::cerr << "got ch: " << cur() << std::endl; )
-					if (cur() == '_') return ftype;
+					if (cur() == '_') return manager.release();
 					Type * param = parseType();
 					if (! param) return nullptr;
@@ -452,4 +453,5 @@
 				if (! extractNumber(ncomponents)) return nullptr;
 				for (size_t i = 0; i < ncomponents; ++i) {
+					// TODO: delete all on return
 					if (done()) return nullptr;
 					PRINT( std::cerr << "got ch: " << cur() << std::endl; )
@@ -515,4 +517,5 @@
 				Type * type = nullptr;
 				if (! view.parse(name, type)) return mangleName;
+				std::unique_ptr<Type> manager(type);
 				return genDemangleType(type, name);
 			}
