if (demangled_name) { mangled_name = name; modified_name = demangled_name; needtofreename = 1; } } else if (current_language->la_language == language_java) { demangled_name = cplus_demangle (name, DMGL_ANSI | DMGL_PARAMS | DMGL_JAVA);
lookup_symbol (const char *name, const struct block *block,	       const domain_enum domain, int *is_a_field_of_this,	       struct symtab **symtab){  char *demangled_name = NULL;  const char *modified_name = NULL;  const char *mangled_name = NULL;  int needtofreename = 0;  struct symbol *returnval;  modified_name = name;  /* If we are using C++ language, demangle the name before doing a lookup, so     we can always binary search. */  if (current_language->la_language == language_cplus)    {      demangled_name = cplus_demangle (name, DMGL_ANSI | DMGL_PARAMS);      if (demangled_name)	{	  mangled_name = name;	  modified_name = demangled_name;	  needtofreename = 1;	}    }  if (case_sensitivity == case_sensitive_off)    {      char *copy;      int len, i;      len = strlen (name);      copy = (char *) alloca (len + 1);      for (i= 0; i < len; i++)        copy[i] = tolower (name[i]);      copy[len] = 0;      modified_name = copy;    }  returnval = lookup_symbol_aux (modified_name, mangled_name, block,				 domain, is_a_field_of_this, symtab);  if (needtofreename)    xfree (demangled_name);  return returnval;	 }