mirror of
https://git.suyu.dev/suyu/breakpad.git
synced 2026-01-03 21:24:43 +01:00
Rewrite SimpleStringDictionary with NonAllocatingMap.
NonAllocatingMap has a near-identical interface, but is significantly less code, more customizable, and has storage that is POD. BUG=http://code.google.com/p/chromium/issues/detail?id=77656 Review URL: https://breakpad.appspot.com/568002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1161 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
parent
593eff42ca
commit
77acc6adab
8 changed files with 396 additions and 319 deletions
|
|
@ -67,9 +67,7 @@
|
|||
|
||||
using google_breakpad::ConfigFile;
|
||||
using google_breakpad::EnsureDirectoryPathExists;
|
||||
using google_breakpad::KeyValueEntry;
|
||||
using google_breakpad::SimpleStringDictionary;
|
||||
using google_breakpad::SimpleStringDictionaryIterator;
|
||||
|
||||
//=============================================================================
|
||||
// We want any memory allocations which are used by breakpad during the
|
||||
|
|
@ -469,10 +467,10 @@ void Breakpad::UploadData(NSData *data, NSString *name,
|
|||
NSDictionary *server_parameters) {
|
||||
NSMutableDictionary *config = [NSMutableDictionary dictionary];
|
||||
|
||||
SimpleStringDictionaryIterator it(*config_params_);
|
||||
while (const KeyValueEntry *next = it.Next()) {
|
||||
[config setValue:[NSString stringWithUTF8String:next->GetValue()]
|
||||
forKey:[NSString stringWithUTF8String:next->GetKey()]];
|
||||
SimpleStringDictionary::Iterator it(*config_params_);
|
||||
while (const SimpleStringDictionary::Entry *next = it.Next()) {
|
||||
[config setValue:[NSString stringWithUTF8String:next->value]
|
||||
forKey:[NSString stringWithUTF8String:next->key]];
|
||||
}
|
||||
|
||||
Uploader *uploader =
|
||||
|
|
|
|||
|
|
@ -66,13 +66,11 @@
|
|||
#define catch(X) if (false)
|
||||
#endif // __EXCEPTIONS
|
||||
|
||||
using google_breakpad::KeyValueEntry;
|
||||
using google_breakpad::MachPortSender;
|
||||
using google_breakpad::MachReceiveMessage;
|
||||
using google_breakpad::MachSendMessage;
|
||||
using google_breakpad::ReceivePort;
|
||||
using google_breakpad::SimpleStringDictionary;
|
||||
using google_breakpad::SimpleStringDictionaryIterator;
|
||||
|
||||
//=============================================================================
|
||||
// We want any memory allocations which are used by breakpad during the
|
||||
|
|
@ -697,8 +695,8 @@ bool Breakpad::HandleException(int exception_type,
|
|||
|
||||
if (result == KERN_SUCCESS) {
|
||||
// Now, send a series of key-value pairs to the Inspector.
|
||||
const KeyValueEntry *entry = NULL;
|
||||
SimpleStringDictionaryIterator iter(*config_params_);
|
||||
const SimpleStringDictionary::Entry *entry = NULL;
|
||||
SimpleStringDictionary::Iterator iter(*config_params_);
|
||||
|
||||
while ( (entry = iter.Next()) ) {
|
||||
KeyValueMessageData keyvalue_data(*entry);
|
||||
|
|
|
|||
|
|
@ -166,15 +166,15 @@ void ConfigFile::WriteFile(const char* directory,
|
|||
BOOL result = YES;
|
||||
const SimpleStringDictionary &dictionary = *configurationParameters;
|
||||
|
||||
const KeyValueEntry *entry = NULL;
|
||||
SimpleStringDictionaryIterator iter(dictionary);
|
||||
const SimpleStringDictionary::Entry *entry = NULL;
|
||||
SimpleStringDictionary::Iterator iter(dictionary);
|
||||
|
||||
while ((entry = iter.Next())) {
|
||||
DEBUGLOG(stderr,
|
||||
"config: (%s) -> (%s)\n",
|
||||
entry->GetKey(),
|
||||
entry->GetValue());
|
||||
result = AppendConfigString(entry->GetKey(), entry->GetValue());
|
||||
entry->key,
|
||||
entry->value);
|
||||
result = AppendConfigString(entry->key, entry->value);
|
||||
|
||||
if (!result)
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -65,13 +65,14 @@ struct InspectorInfo {
|
|||
struct KeyValueMessageData {
|
||||
public:
|
||||
KeyValueMessageData() {}
|
||||
KeyValueMessageData(const google_breakpad::KeyValueEntry &inEntry) {
|
||||
strlcpy(key, inEntry.GetKey(), sizeof(key) );
|
||||
strlcpy(value, inEntry.GetValue(), sizeof(value) );
|
||||
explicit KeyValueMessageData(
|
||||
const google_breakpad::SimpleStringDictionary::Entry &inEntry) {
|
||||
strlcpy(key, inEntry.key, sizeof(key) );
|
||||
strlcpy(value, inEntry.value, sizeof(value) );
|
||||
}
|
||||
|
||||
char key[google_breakpad::KeyValueEntry::MAX_STRING_STORAGE_SIZE];
|
||||
char value[google_breakpad::KeyValueEntry::MAX_STRING_STORAGE_SIZE];
|
||||
char key[google_breakpad::SimpleStringDictionary::key_size];
|
||||
char value[google_breakpad::SimpleStringDictionary::value_size];
|
||||
};
|
||||
|
||||
using std::string;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue