From 4509402aa99e177ea2e4189311fa8e6dec6ce164 Mon Sep 17 00:00:00 2001 From: Jeffrey Morlan Date: Fri, 1 Aug 2008 21:48:54 +0000 Subject: [PATCH] In rsym, allow a stabs entry to be longer than 256 characters, so that ROS may be compiled with -feliminate-unused-debug-symbols which reduces the needed disk space a lot. svn path=/trunk/; revision=35020 --- reactos/tools/rsym.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/reactos/tools/rsym.c b/reactos/tools/rsym.c index 38c0b7e3c95..0ae8fb8ea46 100644 --- a/reactos/tools/rsym.c +++ b/reactos/tools/rsym.c @@ -143,6 +143,7 @@ ConvertStabs(ULONG *SymbolsCount, PROSSYM_ENTRY *SymbolsBase, ULONG_PTR Address, LastFunctionAddress; int First = 1; char *Name; + ULONG NameLen; char FuncName[256]; PROSSYM_ENTRY Current; @@ -220,18 +221,16 @@ ConvertStabs(ULONG *SymbolsCount, PROSSYM_ENTRY *SymbolsBase, Current->Address = Address; Current->FileOffset = Current[-1].FileOffset; } - if (sizeof(FuncName) <= strlen((char *) StabStringsBase + StabEntry[i].n_strx)) + Name = (char *) StabStringsBase + StabEntry[i].n_strx; + NameLen = strcspn(Name, ":"); + if (sizeof(FuncName) <= NameLen) { free(*SymbolsBase); fprintf(stderr, "Function name too long\n"); return 1; } - strcpy(FuncName, (char *) StabStringsBase + StabEntry[i].n_strx); - Name = strchr(FuncName, ':'); - if (NULL != Name) - { - *Name = '\0'; - } + memcpy(FuncName, Name, NameLen); + FuncName[NameLen] = '\0'; Current->FunctionOffset = FindOrAddString(FuncName, StringsLength, StringsBase);