aboutsummaryrefslogtreecommitdiffstats
path: root/dirmngr/cdblib.c
diff options
context:
space:
mode:
Diffstat (limited to 'dirmngr/cdblib.c')
-rw-r--r--dirmngr/cdblib.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/dirmngr/cdblib.c b/dirmngr/cdblib.c
index 16d53aed8..3bfeffc11 100644
--- a/dirmngr/cdblib.c
+++ b/dirmngr/cdblib.c
@@ -135,7 +135,7 @@ cdb_init(struct cdb *cdbp, int fd)
hFile = fd;
# else
hFile = (HANDLE) _get_osfhandle(fd);
-#endif
+# endif
if (hFile == (HANDLE) -1)
return -1;
hMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
@@ -144,6 +144,7 @@ cdb_init(struct cdb *cdbp, int fd)
mem = (unsigned char *)MapViewOfFile(hMapping, FILE_MAP_READ, 0, 0, 0);
if (!mem)
return -1;
+ cdbp->cdb_mapping = hMapping;
#else
mem = (unsigned char*)mmap(NULL, fsize, PROT_READ, MAP_SHARED, fd, 0);
if (mem == MAP_FAILED)
@@ -180,17 +181,9 @@ cdb_free(struct cdb *cdbp)
{
if (cdbp->cdb_mem) {
#ifdef _WIN32
- HANDLE hFile, hMapping;
-#endif
-#ifdef _WIN32
-#ifdef __MINGW32CE__
- hFile = cdbp->cdb_fd;
-#else
- hFile = (HANDLE) _get_osfhandle(cdbp->cdb_fd);
-#endif
- hMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
- UnmapViewOfFile((void*) cdbp->cdb_mem);
- CloseHandle(hMapping);
+ UnmapViewOfFile ((void*) cdbp->cdb_mem);
+ CloseHandle (cdbp->cdb_mapping);
+ cdbp->cdb_mapping = NULL;
#else
munmap((void*)cdbp->cdb_mem, cdbp->cdb_fsize);
#endif /* _WIN32 */