Print this page
libconv

*** 23,32 **** --- 23,33 ---- * Copyright (c) 1988 AT&T * Copyright (c) 1989 AT&T * All Rights Reserved * * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2018 Jason King */ #include <stdio.h> #include <stdlib.h> #include <unistd.h>
*** 803,822 **** buf->indx = i; /* allow to work on machines where NULL-derefs dump core */ if (sym.st_name == 0) buf->name = ""; else if (C_flag) { ! const char *dn; char *name = (char *)elf_strptr(elf, link, sym.st_name); dn = conv_demangle_name(name); ! if (strcmp(dn, name) == 0) { /* Not demangled */ ! if (exotic(name)) { name = FormatName(name, d_buf); } - } else { /* name demangled */ - name = FormatName(name, dn); - } buf->name = name; } else buf->name = (char *)elf_strptr(elf, link, sym.st_name); --- 804,823 ---- buf->indx = i; /* allow to work on machines where NULL-derefs dump core */ if (sym.st_name == 0) buf->name = ""; else if (C_flag) { ! const char *dn = NULL; char *name = (char *)elf_strptr(elf, link, sym.st_name); + dn = conv_demangle_name(name); ! if (dn != name) { ! name = FormatName(name, dn); ! free((void *)dn); ! } else if (exotic(name)) { name = FormatName(name, d_buf); } buf->name = name; } else buf->name = (char *)elf_strptr(elf, link, sym.st_name);