When a symbol name already contains a module name, we shouldn't search
in other modules.

diff --git a/programs/winedbg/symbol.c b/programs/winedbg/symbol.c
index 837f118..9a61e51 100644
--- a/programs/winedbg/symbol.c
+++ b/programs/winedbg/symbol.c
@@ -232,9 +232,16 @@
     sgv.bp_disp    = bp_disp ? TRUE : FALSE;
     sgv.do_thunks  = DBG_IVAR(AlwaysShowThunks);
 
-    buffer[0] = '*';
-    buffer[1] = '!';
-    strcpy(&buffer[2], name);
+    if (strchr(name, '!'))
+    {
+        strcpy(buffer, name);
+    }
+    else
+    {
+        buffer[0] = '*';
+        buffer[1] = '!';
+        strcpy(&buffer[2], name);
+    }
 
     /* this is a wine specific options to return also ELF modules in the
      * enumeration
@@ -248,8 +255,20 @@
 
     if (!sgv.num && (name[0] != '_'))
     {
-        buffer[2] = '_';
-        strcpy(&buffer[3], name);
+        char*   ptr = strchr(name, '!');
+
+        if (ptr++)
+        {
+            memmove(ptr + 1, ptr, strlen(ptr));
+            *ptr = '_';
+        }
+        else
+        {
+            buffer[0] = '*';
+            buffer[1] = '!';
+            buffer[2] = '_';
+            strcpy(&buffer[3], name);
+        }
         if (!SymEnumSymbols(dbg_curr_process->handle, 0, buffer, sgv_cb, (void*)&sgv))
         {
             SymSetOptions(opt);