forget_types (work); if (work -> typevec != NULL) { free ((char *) work -> typevec); work -> typevec = NULL; work -> typevec_size = 0; } if (work->tmpl_argvec) { int i;  for (i = 0; i < work->ntmpl_args; i++) if (work->tmpl_argvec[i]) free ((char*) work->tmpl_argvec[i]);  free ((char*) work->tmpl_argvec); work->tmpl_argvec = NULL; } if (work->previous_argument) { string_delete (work->previous_argument); free ((char*) work->previous_argument); work->previous_argument = NULL; }
delete_non_B_K_work_stuff (work);
mop_up (work, declp, success)     struct work_stuff *work;     string *declp;     int success;{  char *demangled = NULL;  /* Discard the remembered types, if any.  */  forget_types (work);  if (work -> typevec != NULL)    {      free ((char *) work -> typevec);      work -> typevec = NULL;      work -> typevec_size = 0;    }  if (work->tmpl_argvec)    {      int i;      for (i = 0; i < work->ntmpl_args; i++)	if (work->tmpl_argvec[i])	  free ((char*) work->tmpl_argvec[i]);      free ((char*) work->tmpl_argvec);      work->tmpl_argvec = NULL;    }  if (work->previous_argument)    {      string_delete (work->previous_argument);      free ((char*) work->previous_argument);      work->previous_argument = NULL;    }  /* If demangling was successful, ensure that the demangled string is null     terminated and return it.  Otherwise, free the demangling decl.  */  if (!success)    {      string_delete (declp);    }  else    {      string_appendn (declp, "", 1);      demangled = declp -> b;    }  return (demangled);}