Eric Pouech : dbghelp: Fix SymFindFileInPath to return files matching the requested

Alexandre Julliard julliard at wine.codeweavers.com
Mon Feb 20 05:40:25 CST 2006


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

Author: Eric Pouech <eric.pouech at wanadoo.fr>
Date:   Mon Feb 20 11:14:34 2006 +0100

dbghelp: Fix SymFindFileInPath to return files matching the requested
criteria (it was mainly doing the opposite).

---

 dlls/dbghelp/path.c |   19 +++++++++++++------
 1 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/dlls/dbghelp/path.c b/dlls/dbghelp/path.c
index b8f1775..2362ca1 100644
--- a/dlls/dbghelp/path.c
+++ b/dlls/dbghelp/path.c
@@ -220,11 +220,17 @@ struct sffip
     void*                       user;
 };
 
+/* checks that buffer (as found by matching the name) matches the info
+ * (information is based on file type)
+ * returns TRUE when file is found, FALSE to continue searching
+ * (NB this is the opposite conventions as for SymFindFileInPathProc)
+ */
 static BOOL CALLBACK sffip_cb(LPCSTR buffer, void* user)
 {
     struct sffip*       s = (struct sffip*)user;
     DWORD               size, checksum;
     DWORD_PTR           timestamp;
+
     /* FIXME: should check that id/two/three match the file pointed
      * by buffer
      */
@@ -239,7 +245,7 @@ static BOOL CALLBACK sffip_cb(LPCSTR buf
             size = ~s->two;
             hFile = CreateFileA(buffer, GENERIC_READ, FILE_SHARE_READ, NULL, 
                                 OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
-            if (hFile == INVALID_HANDLE_VALUE) return TRUE;
+            if (hFile == INVALID_HANDLE_VALUE) return FALSE;
             if ((hMap = CreateFileMappingA(hFile, NULL, PAGE_READONLY, 0, 0, NULL)) != NULL)
             {
                 if ((mapping = MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0)) != NULL)
@@ -255,7 +261,7 @@ static BOOL CALLBACK sffip_cb(LPCSTR buf
             if (timestamp != (DWORD_PTR)s->id || size != s->two)
             {
                 WARN("Found %s, but wrong size or timestamp\n", buffer);
-                return TRUE;
+                return FALSE;
             }
         }
         break;
@@ -266,13 +272,13 @@ static BOOL CALLBACK sffip_cb(LPCSTR buf
             {
                 WARN("Found %s, but wrong checksums: %08lx %08lx\n",
                       buffer, checksum, (DWORD_PTR)s->id);
-                return TRUE;
+                return FALSE;
             }
         }
         else
         {
             WARN("Couldn't read %s\n", buffer);
-            return TRUE;
+            return FALSE;
         }
         break;
     case DMT_PDB:
@@ -281,7 +287,7 @@ static BOOL CALLBACK sffip_cb(LPCSTR buf
         break;
     default:
         FIXME("What the heck??\n");
-        return TRUE;
+        return FALSE;
     }
     /* yes, EnumDirTree/do_search and SymFindFileInPath callbacks use the opposite
      * convention to stop/continue enumeration. sigh.
@@ -342,7 +348,8 @@ BOOL WINAPI SymFindFileInPath(HANDLE hPr
             strcpy(tmp, searchPath);
             searchPath = NULL;
         }
-        if (do_search(filename, tmp, FALSE, sffip_cb, &s)) {
+        if (do_search(filename, tmp, FALSE, sffip_cb, &s))
+        {
             strcpy(buffer, tmp);
             return TRUE;
         }




More information about the wine-cvs mailing list