Eric Pouech : dbghelp: Enums should be found by name (as UDTs are).

Alexandre Julliard julliard at winehq.org
Mon Aug 30 15:53:52 CDT 2021


Module: wine
Branch: master
Commit: 46c12b2971a9514ec80ca48017c7fce1bc91f6fe
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=46c12b2971a9514ec80ca48017c7fce1bc91f6fe

Author: Eric Pouech <eric.pouech at gmail.com>
Date:   Mon Aug 30 09:24:48 2021 +0200

dbghelp: Enums should be found by name (as UDTs are).

Signed-off-by: Eric Pouech <eric.pouech at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dbghelp/dbghelp_private.h |  2 +-
 dlls/dbghelp/type.c            | 11 +++++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/dlls/dbghelp/dbghelp_private.h b/dlls/dbghelp/dbghelp_private.h
index 0e5c1826108..2906a5df6c3 100644
--- a/dlls/dbghelp/dbghelp_private.h
+++ b/dlls/dbghelp/dbghelp_private.h
@@ -270,8 +270,8 @@ struct symt_basic
 struct symt_enum
 {
     struct symt                 symt;
+    struct hash_table_elt       hash_elt;
     struct symt*                base_type;
-    const char*                 name;
     struct vector               vchildren;
 };
 
diff --git a/dlls/dbghelp/type.c b/dlls/dbghelp/type.c
index 56673a7e4c4..da4fc1a0a9d 100644
--- a/dlls/dbghelp/type.c
+++ b/dlls/dbghelp/type.c
@@ -88,7 +88,7 @@ const char* symt_get_name(const struct symt* sym)
     case SymTagLabel:           return ((const struct symt_hierarchy_point*)sym)->hash_elt.name;
     case SymTagThunk:           return ((const struct symt_thunk*)sym)->hash_elt.name;
     /* hierarchy tree */
-    case SymTagEnum:            return ((const struct symt_enum*)sym)->name;
+    case SymTagEnum:            return ((const struct symt_enum*)sym)->hash_elt.name;
     case SymTagTypedef:         return ((const struct symt_typedef*)sym)->hash_elt.name;
     case SymTagUDT:             return ((const struct symt_udt*)sym)->hash_elt.name;
     case SymTagCompiland:       return source_get(((const struct symt_compiland*)sym)->container->module,
@@ -307,12 +307,19 @@ struct symt_enum* symt_new_enum(struct module* module, const char* typename,
 {
     struct symt_enum*   sym;
 
+    TRACE_(dbghelp_symt)("Adding enum %s:%s\n",
+                         debugstr_w(module->module.ModuleName), typename);
     if ((sym = pool_alloc(&module->pool, sizeof(*sym))))
     {
         sym->symt.tag            = SymTagEnum;
-        sym->name = (typename) ? pool_strdup(&module->pool, typename) : NULL;
+        if (typename)
+        {
+            sym->hash_elt.name = pool_strdup(&module->pool, typename);
+            hash_table_add(&module->ht_types, &sym->hash_elt);
+        } else sym->hash_elt.name = NULL;
         sym->base_type           = basetype;
         vector_init(&sym->vchildren, sizeof(struct symt*), 8);
+        symt_add_type(module, &sym->symt);
     }
     return sym;
 }




More information about the wine-cvs mailing list