Index: src/SymTab/Demangle.cc
===================================================================
--- src/SymTab/Demangle.cc	(revision 095b99a642c9068d6d432af63ad1a7e1b7fb9ec2)
+++ src/SymTab/Demangle.cc	(revision 8abca0660e7023ad48db341fe98ce11969bb2e8a)
@@ -10,6 +10,6 @@
 // Created On       : Thu Jul 19 12:52:41 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Dec 13 14:54:15 2019
-// Update Count     : 4
+// Last Modified On : Tue Feb 11 15:09:18 2020
+// Update Count     : 10
 //
 
@@ -19,4 +19,5 @@
 #include "CodeGen/GenType.h"
 #include "Common/PassVisitor.h"
+#include "Common/utility.h"								// isPrefix
 #include "Mangler.h"
 #include "SynTree/Type.h"
@@ -416,7 +417,13 @@
 
 			bool StringView::isPrefix(const std::string & pref) {
-				if ( pref.size() > str.size()-idx ) return false;
-				auto its = std::mismatch( pref.begin(), pref.end(), std::next(str.begin(), idx) );
-				if (its.first == pref.end()) {
+				// if ( pref.size() > str.size()-idx ) return false;
+				// auto its = std::mismatch( pref.begin(), pref.end(), std::next(str.begin(), idx) );
+				// if (its.first == pref.end()) {
+				// 	idx += pref.size();
+				// 	return true;
+				// }
+
+				// This update is untested because there are no tests for this code.
+				if ( ::isPrefix( str, pref, idx ) ) {
 					idx += pref.size();
 					return true;
@@ -429,5 +436,5 @@
 				PRINT( std::cerr << "====== " << str.size() << " " << str << std::endl; )
 				if (str.size() < 2+Encoding::manglePrefix.size()) return false; // +2 for at least _1 suffix
-				if (! isPrefix(Encoding::manglePrefix) || ! isdigit(str.back())) return false;
+				if ( ! isPrefix(Encoding::manglePrefix) || ! isdigit(str.back() ) ) return false;
 
 				// get name
