Eric Pouech : dbghelp: Implemented TI_GET_COUNT in SymGetTypeInfo for function.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Mar 6 04:51:03 CST 2006


Module: wine
Branch: refs/heads/master
Commit: e70617883b4e883d46dc68ce8d6dfde7c4d354e4
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=e70617883b4e883d46dc68ce8d6dfde7c4d354e4

Author: Eric Pouech <eric.pouech at wanadoo.fr>
Date:   Sun Mar  5 21:48:07 2006 +0100

dbghelp: Implemented TI_GET_COUNT in SymGetTypeInfo for function.

---

 dlls/dbghelp/type.c |   21 ++++++++++++++-------
 1 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/dlls/dbghelp/type.c b/dlls/dbghelp/type.c
index 4a336c5..4177aaa 100644
--- a/dlls/dbghelp/type.c
+++ b/dlls/dbghelp/type.c
@@ -551,13 +551,20 @@ BOOL symt_get_info(const struct symt* ty
         break;
 
     case TI_GET_COUNT:
-        /* it seems that FunctionType also react to GET_COUNT (same value as
-         * GET_CHILDREN_COUNT ?, except for C++ methods, where it seems to
-         * also include 'this' (GET_CHILDREN_COUNT+1)
-         */
-        if (type->tag != SymTagArrayType) return FALSE;
-        X(DWORD) = ((const struct symt_array*)type)->end - 
-            ((const struct symt_array*)type)->start + 1;
+        switch (type->tag)
+        {
+        case SymTagArrayType:
+            X(DWORD) = ((const struct symt_array*)type)->end - 
+                ((const struct symt_array*)type)->start + 1;
+            break;
+        case SymTagFunctionType:
+            /* this seems to be wrong for (future) C++ methods, where 'this' parameter
+             * should be included in this value (and not in GET_CHILDREN_COUNT)
+             */
+            X(DWORD) = vector_length(&((const struct symt_function_signature*)type)->vchildren);
+            break;
+        default: return FALSE;
+        }
         break;
 
     case TI_GET_DATAKIND:




More information about the wine-cvs mailing list