--- ../../../../gcc-clean/src/gcc/config/darwin.c Sat Jan 25 15:19:38 2003 +++ ./darwin.c Sun Jan 26 04:33:42 2003 @@ -295,19 +295,24 @@ { char *buffer; tree ptr_name; + int len_name = strlen (name); - buffer = alloca (strlen (name) + 20); + buffer = alloca (len_name + 20); strcpy (buffer, "&L"); if (name[0] == '*') - strcat (buffer, name+1); + { + strcpy (buffer+2, name+1); + len_name-=1; + } else { - strcat (buffer, "_"); - strcat (buffer, name); + strcpy (buffer+2, "_"); + strcpy (buffer+3, name); + len_name+=1; } - strcat (buffer, "$non_lazy_ptr"); + strcpy (buffer + 2 + len_name, "$non_lazy_ptr"); ptr_name = get_identifier (buffer); machopic_non_lazy_pointers @@ -354,27 +359,37 @@ char *buffer; tree ptr_name; int needs_quotes = name_needs_quotes (name); + int len = 0; + int name_len = strlen (name); - buffer = alloca (strlen (name) + 20); + buffer = alloca (name_len + 20); if (needs_quotes) - strcpy (buffer, "&\"L"); + { + strcpy (buffer, "&\"L"); + len = strlen ("&\"L"); + } else - strcpy (buffer, "&L"); + { + strcpy (buffer, "&L"); + len = strlen ("&L"); + } if (name[0] == '*') { - strcat (buffer, name+1); + strcpy (buffer + len, name+1); + len += name_len - 1; } else { - strcat (buffer, "_"); - strcat (buffer, name); + strcpy (buffer+len, "_"); + strcpy (buffer+len+1, name); + len+=name_len+1; } if (needs_quotes) - strcat (buffer, "$stub\""); + strcpy (buffer+len, "$stub\""); else - strcat (buffer, "$stub"); + strcpy (buffer+len, "$stub"); ptr_name = get_identifier (buffer); machopic_stubs = tree_cons (ptr_name, ident, machopic_stubs);