diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index b816727f08..3537caeb16 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,9 @@
+2001-12-12  Craig Rodrigues  <rodrigc@gcc.gnu.org>
+
+	PR other/2719
+	* cplus-dem.c (consume_count): Treat negative count as an error.
+	* testsuite/demangle-expected: Added testcase.
+
 Tue Dec 11 07:08:57 2001  Douglas B. Rupp  <rupp@gnat.com>
 
 	* configure.in: Hardcode that vfork works on VMS host.
diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c
index a35ff14624..159f8d5aef 100644
--- a/libiberty/cplus-dem.c
+++ b/libiberty/cplus-dem.c
@@ -574,6 +574,9 @@ consume_count (type)
       (*type)++;
     }
 
+  if (count < 0)
+    count = -1;
+
   return (count);
 }
 
diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected
index 4953c7d110..3a828472de 100644
--- a/libiberty/testsuite/demangle-expected
+++ b/libiberty/testsuite/demangle-expected
@@ -2586,3 +2586,7 @@ JArray.t(JArray[])
 --format=java
 _ZN4Prim1iEibcdfwPN4java4lang6StringEsx
 Prim.i(int, boolean, byte, double, float, char, java.lang.String, short, long)
+#
+--format=hp
+_Utf58_0_1__1_2147483647__2147483648
+_Utf58_0_1__1_2147483647__2147483648