diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 8390e4c784154bb823b6eb20451e4bfb57915c2b..ddd96cce82a267204910e94224966e9fa4626118 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,8 @@
+2014-06-11  Andrew Burgess  <aburgess@broadcom.com>
+
+	* cplus-dem.c (do_type): Call string_delete even if the call to
+	demangle_template fails.
+
 2014-06-01  Ray Donnelly  <mingw.android@gmail.com>
 
 	* pex-win32.c (argv_to_cmdline): Don't quote
diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c
index 2dd0a8a5c8451e22852f91afdc221579e91b780e..52767cc8fde1254d1c6bca78ee4aa7e6589975f6 100644
--- a/libiberty/cplus-dem.c
+++ b/libiberty/cplus-dem.c
@@ -3663,7 +3663,10 @@ do_type (struct work_stuff *work, const char **mangled, string *result)
 		    string_delete (&temp);
 		  }
 		else
-		  break;
+		  {
+		    string_delete (&temp);
+		    break;
+		  }
 	      }
 	    else if (**mangled == 'Q')
 	      {