*** cplus-dem.c	Thu Apr  1 13:37:06 1999
--- /src/sourceware/libiberty/cplus-dem.c	Mon May  3 01:28:54 1999
***************
*** 880,885 ****
--- 880,886 ----
      {
        free ((char *) work -> typevec);
        work -> typevec = NULL;
+       work -> typevec_size = 0;
      }
    if (work->tmpl_argvec)
      {
***************
*** 3363,3370 ****
  	{
  	  int i;
  	  ++(*mangled);
! 	  for (i = 0; **mangled != '_'; ++(*mangled), ++i)
  	    buf[i] = **mangled;
  	  buf[i] = '\0';
  	  ++(*mangled);
  	}
--- 3364,3378 ----
  	{
  	  int i;
  	  ++(*mangled);
! 	  for (i = 0;
! 	       (i < sizeof (buf) - 1 && **mangled && **mangled != '_');
! 	       ++(*mangled), ++i)
  	    buf[i] = **mangled;
+ 	  if (**mangled != '_')
+ 	    {
+ 	      success = 0;
+ 	      break;
+ 	    }
  	  buf[i] = '\0';
  	  ++(*mangled);
  	}
***************
*** 3371,3376 ****
--- 3379,3385 ----
        else
  	{
  	  strncpy (buf, *mangled, 2);
+ 	  buf[2] = '\0';
  	  *mangled += 2;
  	}
        sscanf (buf, "%x", &dec);
