return res ? res : string;
return res ? res : xstrdup (string);
static const char *demangle PARAMS ((const char *string,				     int remove_underscore));/* %% literal % %F error is fatal %P print program name %S print script file and linenumber %E current bfd error or errno %I filename from a lang_input_statement_type %B filename from a bfd %T symbol name %X no object output, fail return %V hex bfd_vma %v hex bfd_vma, no leading zeros %C clever filename:linenumber with function %D like %C, but no function name %R info about a relent %s arbitrary string, like printf %d integer, like printf %u integer, like printf*/static const char *demangle (string, remove_underscore)     const char *string;     int remove_underscore;{  const char *res;  if (remove_underscore      && output_bfd != NULL      && bfd_get_symbol_leading_char (output_bfd) == string[0])    ++string;  /* This is a hack for better error reporting on XCOFF.  */  if (remove_underscore && string[0] == '.')    ++string;  /* Note that there's a memory leak here, we keep buying memory for     demangled names, and never free.  But if you have so many errors     that you run out of VM with the error messages, then there's     something up.  */  res = cplus_demangle (string, DMGL_ANSI | DMGL_PARAMS);  return res ? res : string;}