*** 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);