mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 06:13:31 +01:00
r11444@Kushana: nickm | 2006-12-07 09:38:52 -0500
Fix a couple of obvious bugs in tor_mmap_file on Windows: first, fix a boolean error when checking the return value of CreateFileMapping. Second, CreateFileMapping is documented to return NULL on failure. svn:r9035
This commit is contained in:
parent
65b14eae90
commit
e8dc71ade4
@ -183,7 +183,8 @@ tor_mmap_t *
|
|||||||
tor_mmap_file(const char *filename)
|
tor_mmap_file(const char *filename)
|
||||||
{
|
{
|
||||||
win_mmap_t *res = tor_malloc_zero(sizeof(win_mmap_t));
|
win_mmap_t *res = tor_malloc_zero(sizeof(win_mmap_t));
|
||||||
res->mmap_handle = res->file_handle = INVALID_HANDLE_VALUE;
|
res->file_handle = INVALID_HANDLE_VALUE;
|
||||||
|
res->mmap_handle = NULL;
|
||||||
|
|
||||||
res->file_handle = CreateFile(filename,
|
res->file_handle = CreateFile(filename,
|
||||||
GENERIC_READ,
|
GENERIC_READ,
|
||||||
@ -207,7 +208,7 @@ tor_mmap_file(const char *filename)
|
|||||||
#endif
|
#endif
|
||||||
(res->base.size & 0xfffffffful),
|
(res->base.size & 0xfffffffful),
|
||||||
NULL);
|
NULL);
|
||||||
if (res->mmap_handle != INVALID_HANDLE_VALUE)
|
if (res->mmap_handle == NULL)
|
||||||
goto err;
|
goto err;
|
||||||
res->base.data = (char*) MapViewOfFile(res->mmap_handle,
|
res->base.data = (char*) MapViewOfFile(res->mmap_handle,
|
||||||
FILE_MAP_READ,
|
FILE_MAP_READ,
|
||||||
@ -226,12 +227,11 @@ tor_munmap_file(tor_mmap_t *handle)
|
|||||||
win_mmap_t *h = (win_mmap_t*)
|
win_mmap_t *h = (win_mmap_t*)
|
||||||
(((char*)handle) - STRUCT_OFFSET(win_mmap_t, base));
|
(((char*)handle) - STRUCT_OFFSET(win_mmap_t, base));
|
||||||
if (handle->data)
|
if (handle->data)
|
||||||
|
/* This is an ugly cast, but without it, "data" in struct tor_mmap_t would
|
||||||
/*this is an ugly cast, but without it, "data" in struct tor_mmap_t would
|
have to be redefined as non-const. */
|
||||||
have to be redefined as const*/
|
|
||||||
UnmapViewOfFile( (LPVOID) handle->data);
|
UnmapViewOfFile( (LPVOID) handle->data);
|
||||||
|
|
||||||
if (h->mmap_handle != INVALID_HANDLE_VALUE)
|
if (h->mmap_handle != NULL)
|
||||||
CloseHandle(h->mmap_handle);
|
CloseHandle(h->mmap_handle);
|
||||||
if (h->file_handle != INVALID_HANDLE_VALUE)
|
if (h->file_handle != INVALID_HANDLE_VALUE)
|
||||||
CloseHandle(h->file_handle);
|
CloseHandle(h->file_handle);
|
||||||
|
Loading…
Reference in New Issue
Block a user