diff options
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/symorder/symorder.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/usr.bin/symorder/symorder.c b/usr.bin/symorder/symorder.c index 5c709b6..4a1b79f 100644 --- a/usr.bin/symorder/symorder.c +++ b/usr.bin/symorder/symorder.c @@ -185,15 +185,19 @@ main(argc, argv) strtabsize - sizeof(int)) badfmt("corrupted string table"); - newtab = (struct nlist *)malloc(n); - if (newtab == (struct nlist *)NULL) - error(NULL); - memset(newtab, 0, n); - i = n / sizeof(struct nlist); - reorder(symtab, newtab, i); - free((void *)symtab); - symtab = newtab; + if (!clean) { + newtab = (struct nlist *)malloc(n); + if (newtab == (struct nlist *)NULL) + error(NULL); + memset(newtab, 0, n); + + reorder(symtab, newtab, i); + free((void *)symtab); + symtab = newtab; + } else { + symfound = symkept = i; + } newstrings = malloc(strtabsize); if (newstrings == NULL) |