mirror of
https://github.com/reactos/reactos.git
synced 2024-06-30 09:50:07 +00:00
[CRT] Sync undname.c with Wine Staging 1.7.55. CORE-10536
svn path=/trunk/; revision=70185
This commit is contained in:
parent
e927e91575
commit
f9c372f1d4
|
@ -34,7 +34,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
|
|||
*/
|
||||
|
||||
/* How data types modifiers are stored:
|
||||
* M (in the following definitions) is defined for
|
||||
* M (in the following definitions) is defined for
|
||||
* 'A', 'B', 'C' and 'D' as follows
|
||||
* {<A>}: ""
|
||||
* {<B>}: "const "
|
||||
|
@ -48,7 +48,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
|
|||
* in data fields:
|
||||
* same as for arguments and also the following
|
||||
* ?<M>x {<M>}x
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
struct array
|
||||
|
@ -110,7 +110,7 @@ static void* und_alloc(struct parsed_symbol* sym, unsigned int len)
|
|||
sym->avail_in_first = 0;
|
||||
ptr = (char*)sym->alloc_list + sizeof(void*);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
if (len > sym->avail_in_first)
|
||||
{
|
||||
|
@ -188,7 +188,7 @@ static BOOL str_array_push(struct parsed_symbol* sym, const char* ptr, int len,
|
|||
a->elts[a->num] = und_alloc(sym, len + 1);
|
||||
assert(a->elts[a->num]);
|
||||
memcpy(a->elts[a->num], ptr, len);
|
||||
a->elts[a->num][len] = '\0';
|
||||
a->elts[a->num][len] = '\0';
|
||||
if (++a->num >= a->max) a->max = a->num;
|
||||
{
|
||||
int i;
|
||||
|
@ -217,18 +217,18 @@ static char* str_array_get_ref(struct array* cref, unsigned idx)
|
|||
assert(cref);
|
||||
if (cref->start + idx >= cref->max)
|
||||
{
|
||||
WARN("Out of bounds: %p %d + %d >= %d\n",
|
||||
WARN("Out of bounds: %p %d + %d >= %d\n",
|
||||
cref, cref->start, idx, cref->max);
|
||||
return NULL;
|
||||
}
|
||||
TRACE("Returning %p[%d] => %s\n",
|
||||
TRACE("Returning %p[%d] => %s\n",
|
||||
cref, idx, cref->elts[cref->start + idx]);
|
||||
return cref->elts[cref->start + idx];
|
||||
}
|
||||
|
||||
/******************************************************************
|
||||
* str_printf
|
||||
* Helper for printf type of command (only %s and %c are implemented)
|
||||
* Helper for printf type of command (only %s and %c are implemented)
|
||||
* while dynamically allocating the buffer
|
||||
*/
|
||||
static char* str_printf(struct parsed_symbol* sym, const char* format, ...)
|
||||
|
@ -341,7 +341,7 @@ static const char* get_number(struct parsed_symbol* sym)
|
|||
* Parses a list of function/method arguments, creates a string corresponding
|
||||
* to the arguments' list.
|
||||
*/
|
||||
static char* get_args(struct parsed_symbol* sym, struct array* pmt_ref, BOOL z_term,
|
||||
static char* get_args(struct parsed_symbol* sym, struct array* pmt_ref, BOOL z_term,
|
||||
char open_char, char close_char)
|
||||
|
||||
{
|
||||
|
@ -376,8 +376,8 @@ static char* get_args(struct parsed_symbol* sym, struct array* pmt_ref, BOOL z_t
|
|||
*/
|
||||
if (z_term && *sym->current++ != 'Z') return NULL;
|
||||
|
||||
if (arg_collect.num == 0 ||
|
||||
(arg_collect.num == 1 && !strcmp(arg_collect.elts[0], "void")))
|
||||
if (arg_collect.num == 0 ||
|
||||
(arg_collect.num == 1 && !strcmp(arg_collect.elts[0], "void")))
|
||||
return str_printf(sym, "%cvoid%c", open_char, close_char);
|
||||
for (i = 1; i < arg_collect.num; i++)
|
||||
{
|
||||
|
@ -386,12 +386,12 @@ static char* get_args(struct parsed_symbol* sym, struct array* pmt_ref, BOOL z_t
|
|||
|
||||
last = args_str ? args_str : arg_collect.elts[0];
|
||||
if (close_char == '>' && last[strlen(last) - 1] == '>')
|
||||
args_str = str_printf(sym, "%c%s%s %c",
|
||||
args_str = str_printf(sym, "%c%s%s %c",
|
||||
open_char, arg_collect.elts[0], args_str, close_char);
|
||||
else
|
||||
args_str = str_printf(sym, "%c%s%s%c",
|
||||
args_str = str_printf(sym, "%c%s%s%c",
|
||||
open_char, arg_collect.elts[0], args_str, close_char);
|
||||
|
||||
|
||||
return args_str;
|
||||
}
|
||||
|
||||
|
@ -730,7 +730,7 @@ static BOOL get_calling_convention(char ch, const char** call_conv,
|
|||
static const char* get_simple_type(char c)
|
||||
{
|
||||
const char* type_string;
|
||||
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case 'C': type_string = "signed char"; break;
|
||||
|
@ -759,7 +759,7 @@ static const char* get_simple_type(char c)
|
|||
static const char* get_extended_type(char c)
|
||||
{
|
||||
const char* type_string;
|
||||
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case 'D': type_string = "__int8"; break;
|
||||
|
@ -794,7 +794,7 @@ static BOOL demangle_datatype(struct parsed_symbol* sym, struct datatype_t* ct,
|
|||
|
||||
assert(ct);
|
||||
ct->left = ct->right = NULL;
|
||||
|
||||
|
||||
switch (dt = *sym->current++)
|
||||
{
|
||||
case '_':
|
||||
|
@ -819,7 +819,7 @@ static BOOL demangle_datatype(struct parsed_symbol* sym, struct datatype_t* ct,
|
|||
|
||||
if (!(struct_name = get_class_name(sym)))
|
||||
goto done;
|
||||
if (!(sym->flags & UNDNAME_NO_COMPLEX_TYPE))
|
||||
if (!(sym->flags & UNDNAME_NO_COMPLEX_TYPE))
|
||||
{
|
||||
switch (dt)
|
||||
{
|
||||
|
@ -867,7 +867,7 @@ static BOOL demangle_datatype(struct parsed_symbol* sym, struct datatype_t* ct,
|
|||
unsigned mark = sym->stack.num;
|
||||
|
||||
if (!get_calling_convention(*sym->current++,
|
||||
&call_conv, &exported,
|
||||
&call_conv, &exported,
|
||||
sym->flags & ~UNDNAME_NO_ALLOCATION_LANGUAGE) ||
|
||||
!demangle_datatype(sym, &sub_ct, pmt_ref, FALSE))
|
||||
goto done;
|
||||
|
@ -876,7 +876,7 @@ static BOOL demangle_datatype(struct parsed_symbol* sym, struct datatype_t* ct,
|
|||
if (!args) goto done;
|
||||
sym->stack.num = mark;
|
||||
|
||||
ct->left = str_printf(sym, "%s%s (%s*",
|
||||
ct->left = str_printf(sym, "%s%s (%s*",
|
||||
sub_ct.left, sub_ct.right, call_conv);
|
||||
ct->right = str_printf(sym, ")%s", args);
|
||||
}
|
||||
|
@ -972,7 +972,7 @@ static BOOL demangle_datatype(struct parsed_symbol* sym, struct datatype_t* ct,
|
|||
return FALSE;
|
||||
}
|
||||
done:
|
||||
|
||||
|
||||
return ct->left != NULL;
|
||||
}
|
||||
|
||||
|
@ -1009,7 +1009,7 @@ static BOOL handle_data(struct parsed_symbol* sym)
|
|||
case '0': access = "private: "; break;
|
||||
case '1': access = "protected: "; break;
|
||||
case '2': access = "public: "; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!(sym->flags & UNDNAME_NO_MEMBER_TYPE))
|
||||
|
@ -1059,8 +1059,8 @@ static BOOL handle_data(struct parsed_symbol* sym)
|
|||
if (sym->flags & UNDNAME_NAME_ONLY) ct.left = ct.right = modifier = NULL;
|
||||
|
||||
sym->result = str_printf(sym, "%s%s%s%s%s%s%s%s", access,
|
||||
member_type, ct.left,
|
||||
modifier && ct.left ? " " : NULL, modifier,
|
||||
member_type, ct.left,
|
||||
modifier && ct.left ? " " : NULL, modifier,
|
||||
modifier || ct.left ? " " : NULL, name, ct.right);
|
||||
ret = TRUE;
|
||||
done:
|
||||
|
@ -1530,7 +1530,7 @@ char* CDECL __unDNameEx(char* buffer, const char* mangled, int buflen,
|
|||
|
||||
TRACE("(%p,%s,%d,%p,%p,%p,%x)\n",
|
||||
buffer, mangled, buflen, memget, memfree, unknown, flags);
|
||||
|
||||
|
||||
/* The flags details is not documented by MS. However, it looks exactly
|
||||
* like the UNDNAME_ manifest constants from imagehlp.h and dbghelp.h
|
||||
* So, we copied those (on top of the file)
|
||||
|
|
|
@ -289,7 +289,7 @@ msvcrt -
|
|||
reactos/lib/sdk/crt/string/strtoul.c # Synced to WineStaging-1.7.37
|
||||
reactos/lib/sdk/crt/strings/wcs.c # Synced at 20080611
|
||||
reactos/lib/sdk/crt/wine/heap.c # Synced at 20080529
|
||||
reactos/lib/sdk/crt/wine/undname.c # Synced at 20081130
|
||||
reactos/lib/sdk/crt/wine/undname.c # Synced to WineStaging-1.7.55
|
||||
reactos/lib/sdk/crt/thread/thread.c # Synced at 20080604
|
||||
|
||||
User32 -
|
||||
|
|
Loading…
Reference in a new issue