diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 0a474a31d9053b00738292e95bdaf1e8da2a16b8..b84863200a7d78706f256c6b689f4476d7713bc5 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,8 @@
+2000-09-04  Alex Samuel  <samuel@codesourcery.com>
+
+	* cp-demangle.c (demangle_type_ptr): Increment position past
+	pointer and reference characters.
+
 2000-09-04  Alex Samuel  <samuel@codesourcery.com>
 
 	* cp-demangle.c (demangle_nv_offset): New function.
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index b4e55ee05972cbb8f9d7266b370d9c6e658c73bd..2407c2bdfde6d1bc4b8eb84dceb7353b6afc3347 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -2015,6 +2015,9 @@ demangle_type_ptr (dm, insert_pos, substitution_start)
       /* Insert an asterisk where we're told to; it doesn't
 	 necessarily go at the end.  */
       RETURN_IF_ERROR (result_insert_char (dm, *insert_pos, '*'));
+      /* The next (outermost) pointer or reference character should go
+	 after this one.  */
+      ++(*insert_pos);
     }
   else if (next == 'R')
     {
@@ -2026,6 +2029,9 @@ demangle_type_ptr (dm, insert_pos, substitution_start)
       /* Insert an ampersand where we're told to; it doesn't
 	 necessarily go at the end.  */
       RETURN_IF_ERROR (result_insert_char (dm, *insert_pos, '&'));
+      /* The next (outermost) pointer or reference character should go
+	 after this one.  */
+      ++(*insert_pos);
     }
   else if (next == 'M')
     {