From: Eric Pouech eric.pouech@gmail.com
making better use of %S operator (especially don't force space at beginning of generated string but rather insert space as separator with %S operator)
Signed-off-by: Eric Pouech eric.pouech@gmail.com --- dlls/msvcrt/undname.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-)
diff --git a/dlls/msvcrt/undname.c b/dlls/msvcrt/undname.c index 8a30e0b45b6..8e69213e412 100644 --- a/dlls/msvcrt/undname.c +++ b/dlls/msvcrt/undname.c @@ -480,7 +480,7 @@ static BOOL get_modified_type(struct datatype_t *ct, struct parsed_symbol* sym, default: return FALSE; } if (ref || str_modif || xdt.left || xdt.right) - ct->left = str_build(sym, " %s%S%S%S", xdt.left, ref, xdt.right, str_modif); + ct->left = str_build(sym, "%s%S%S%S", xdt.left, ref, xdt.right, str_modif); else ct->left = NULL; ct->right = NULL; @@ -500,10 +500,7 @@ static BOOL get_modified_type(struct datatype_t *ct, struct parsed_symbol* sym, if (!(n1 = get_number(sym))) return FALSE; num = atoi(n1);
- if (ct->left && ct->left[0] == ' ' && !xdt.left) - ct->left++; - - ct->left = str_build(sym, " (%s%s", xdt.left, ct->left); + ct->left = str_build(sym, "(%s%S", xdt.left, ct->left); ct->right = ")"; xdt.left = NULL;
@@ -514,15 +511,15 @@ static BOOL get_modified_type(struct datatype_t *ct, struct parsed_symbol* sym, /* Recurse to get the referred-to type */ if (!demangle_datatype(sym, &sub_ct, pmt_ref, FALSE)) return FALSE; - if (xdt.left) - ct->left = str_build(sym, "%s %s%s", sub_ct.left, xdt.left, ct->left); - else - { - /* don't insert a space between duplicate '*' */ - if (!in_args && ct->left && ct->left[0] && ct->left[1] == '*' && sub_ct.left[strlen(sub_ct.left)-1] == '*') - ct->left++; + /* don't insert a space between duplicate '*' */ + if (!in_args && + sub_ct.left && sub_ct.left[0] && sub_ct.left[strlen(sub_ct.left) - 1] == '*' && + !xdt.left && + ct->left && ct->left[0] == '*') ct->left = str_build(sym, "%s%s", sub_ct.left, ct->left); - } + else + ct->left = str_build(sym, "%s%S%S", sub_ct.left, xdt.left, ct->left); + if (sub_ct.right) ct->right = str_build(sym, "%s%s", ct->right, sub_ct.right); sym->stack.num = mark; }