X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ida%2Fsaveasm%2Fsaveasm.cpp;h=ea09fc23be536fda4e997163e29fde98f18c0356;hb=9bbecbfbce7530f47af567605611f091f2bd84ad;hp=5a6a2a65be16e3e6980e0b0d32734aee095f2ae1;hpb=11437ea1ca9b117227bb3f417796582be70116e7;p=ia32rtools.git diff --git a/ida/saveasm/saveasm.cpp b/ida/saveasm/saveasm.cpp index 5a6a2a6..ea09fc2 100644 --- a/ida/saveasm/saveasm.cpp +++ b/ida/saveasm/saveasm.cpp @@ -240,6 +240,7 @@ static void idaapi run(int /*arg*/) char buf[MAXSTR]; char buf2[MAXSTR]; const char *name; + const char *cp; struc_t *frame; func_t *func; ea_t ui_ea_block = 0, ea_size; @@ -524,8 +525,20 @@ static void idaapi run(int /*arg*/) // rename vars with '?@' (funcs are ok) int change_qat = 0; ea_flags = get_flags_novalue(ea); - if (!isCode(ea_flags) && strpbrk(name, "?@")) - change_qat = 1; + if (!isCode(ea_flags)) { + if (IS_START(name, "__imp_")) + /* some import */; + else if (name[0] == '?' && strstr(name, "@@")) + /* c++ import */; + else if (strchr(name, '?')) + change_qat = 1; + else if ((cp = strchr(name, '@'))) { + char *endp = NULL; + strtol(cp + 1, &endp, 10); + if (endp == NULL || *endp != 0) + change_qat = 1; + } + } if (need_rename || change_qat) { msg("%x: renaming name '%s'\n", ea, name);