1
0
Fork 0

Revert "Remove redundant hashes in bookmarks"

This reverts commit c85f87fea2.
This commit is contained in:
Nukem 2015-03-29 19:33:00 -04:00
parent b9636b24eb
commit 1e780afff9
2 changed files with 15 additions and 18 deletions

View File

@ -20,13 +20,13 @@ bool BookmarkSet(uint Address, bool Manual)
BOOKMARKSINFO bookmark;
ModNameFromAddr(Address, bookmark.mod, true);
bookmark.addr = Address;
bookmark.addr = Address - ModBaseFromAddr(Address);
bookmark.manual = Manual;
// Exclusive lock to insert new data
EXCLUSIVE_ACQUIRE(LockBookmarks);
if(!bookmarks.insert(std::make_pair(Address, bookmark)).second)
if(!bookmarks.insert(std::make_pair(ModHashFromAddr(Address), bookmark)).second)
return BookmarkDelete(Address);
return true;
@ -39,7 +39,7 @@ bool BookmarkGet(uint Address)
return false;
SHARED_ACQUIRE(LockBookmarks);
return (bookmarks.count(Address) > 0);
return (bookmarks.count(ModHashFromAddr(Address)) > 0);
}
bool BookmarkDelete(uint Address)
@ -49,7 +49,7 @@ bool BookmarkDelete(uint Address)
return false;
EXCLUSIVE_ACQUIRE(LockBookmarks);
return (bookmarks.erase(Address) > 0);
return (bookmarks.erase(ModHashFromAddr(Address)) > 0);
}
void BookmarkDelRange(uint Start, uint End)
@ -73,6 +73,10 @@ void BookmarkDelRange(uint Start, uint End)
if(moduleBase != ModBaseFromAddr(End))
return;
// Virtual -> relative offset
Start -= moduleBase;
End -= moduleBase;
EXCLUSIVE_ACQUIRE(LockBookmarks);
for(auto itr = bookmarks.begin(); itr != bookmarks.end();)
{
@ -104,12 +108,8 @@ void BookmarkCacheSave(JSON Root)
{
JSON currentBookmark = json_object();
// The address must be adjusted to use an offset
// OFFSET = ADDRESS - MOD_BASE
uint virtualOffset = itr.second.addr - ModBaseFromAddr(itr.second.addr);
json_object_set_new(currentBookmark, "module", json_string(itr.second.mod));
json_object_set_new(currentBookmark, "address", json_hex(virtualOffset));
json_object_set_new(currentBookmark, "address", json_hex(itr.second.addr));
if(itr.second.manual)
json_array_append_new(jsonBookmarks, currentBookmark);
@ -152,11 +152,8 @@ void BookmarkCacheLoad(JSON Root)
bookmarkInfo.addr = (uint)json_hex_value(json_object_get(value, "address"));
bookmarkInfo.manual = Manual;
// The offset must be adjusted to use virtual addressing
// ADDRESS = OFFSET + MOD_BASE
bookmarkInfo.addr += ModBaseFromName(bookmarkInfo.mod);
bookmarks.insert(std::make_pair(bookmarkInfo.addr, bookmarkInfo));
const uint key = ModHashFromName(bookmarkInfo.mod) + bookmarkInfo.addr;
bookmarks.insert(std::make_pair(key, bookmarkInfo));
}
};
@ -192,11 +189,11 @@ bool BookmarkEnum(BOOKMARKSINFO* List, size_t* Size)
return true;
}
// Copy struct over
// Copy struct and adjust the relative offset to a virtual address
for(auto & itr : bookmarks)
{
*List = itr.second;
List++;
*List = itr.second;
List->addr += ModBaseFromName(List->mod);
}
return true;

View File

@ -48,7 +48,7 @@ int BpGetList(std::vector<BREAKPOINT>* List)
}
}
return (int)breakpoints.size();
return breakpoints.size();
}
bool BpNew(uint Address, bool Enable, bool Singleshot, short OldBytes, BP_TYPE Type, DWORD TitanType, const char* Name)