Module: wine Branch: master Commit: 299f9e6b4770c2b245716f7374959800eb4ada9c URL: http://source.winehq.org/git/wine.git/?a=commit;h=299f9e6b4770c2b245716f7374...
Author: Piotr Caban piotr@codeweavers.com Date: Wed Apr 4 09:25:58 2012 +0200
wininet: Only mark elements as deleted in DeleteUrlCacheEntry function.
---
dlls/wininet/urlcache.c | 12 +++++------- 1 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/dlls/wininet/urlcache.c b/dlls/wininet/urlcache.c index f5fcf10..fb9e701 100644 --- a/dlls/wininet/urlcache.c +++ b/dlls/wininet/urlcache.c @@ -72,7 +72,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(wininet); #define NEWFILE_SIZE (NEWFILE_NUM_BLOCKS * BLOCKSIZE + ENTRY_START_OFFSET)
#define HASHTABLE_URL 0 -#define HASHTABLE_LEAK 1 +#define HASHTABLE_DEL 1 #define HASHTABLE_LOCK 2 #define HASHTABLE_FREE 3 #define HASHTABLE_REDR 5 @@ -838,11 +838,10 @@ static BOOL URLCache_DeleteEntry(LPURLCACHE_HEADER pHeader, CACHEFILE_ENTRY * pE BYTE * AllocationTable = (LPBYTE)pHeader + ALLOCATION_TABLE_OFFSET;
/* update allocation table */ - dwStartBlock = ((DWORD)((BYTE *)pEntry - (BYTE *)pHeader)) / BLOCKSIZE; + dwStartBlock = ((DWORD)((BYTE *)pEntry - (BYTE *)pHeader) - ENTRY_START_OFFSET) / BLOCKSIZE; for (dwBlock = dwStartBlock; dwBlock < dwStartBlock + pEntry->dwBlocksUsed; dwBlock++) URLCache_Allocation_BlockFree(AllocationTable, dwBlock);
- ZeroMemory(pEntry, pEntry->dwBlocksUsed * BLOCKSIZE); return TRUE; }
@@ -1302,8 +1301,7 @@ static void URLCache_HashEntrySetFlags(struct _HASH_ENTRY * pHashEntry, DWORD dw */ static BOOL URLCache_DeleteEntryFromHash(struct _HASH_ENTRY * pHashEntry) { - pHashEntry->dwHashKey = HASHTABLE_FREE; - pHashEntry->dwOffsetEntry = HASHTABLE_FREE; + pHashEntry->dwHashKey = HASHTABLE_DEL; return TRUE; }
@@ -1353,7 +1351,7 @@ static DWORD URLCache_AddEntryToHash(LPURLCACHE_HEADER pHeader, LPCSTR lpszUrl, for (i = 0; i < HASHTABLE_BLOCKSIZE; i++) { struct _HASH_ENTRY * pHashElement = &pHashEntry->HashTable[offset + i]; - if (pHashElement->dwHashKey == HASHTABLE_FREE) /* if the slot is free */ + if (pHashElement->dwHashKey==HASHTABLE_FREE || pHashElement->dwHashKey==HASHTABLE_DEL) /* if the slot is free */ { pHashElement->dwHashKey = key; pHashElement->dwOffsetEntry = dwOffsetEntry; @@ -1459,7 +1457,7 @@ static BOOL URLCache_EnumHashTableEntries(LPCURLCACHE_HEADER pHeader, const HASH { for (; *index < HASHTABLE_SIZE ; (*index)++) { - if (pHashEntry->HashTable[*index].dwHashKey == HASHTABLE_FREE) + if (pHashEntry->HashTable[*index].dwHashKey==HASHTABLE_FREE || pHashEntry->HashTable[*index].dwHashKey==HASHTABLE_DEL) continue;
*ppHashEntry = &pHashEntry->HashTable[*index];