diff options
Diffstat (limited to 'src/processor/simple_symbol_supplier.cc')
-rw-r--r-- | src/processor/simple_symbol_supplier.cc | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/processor/simple_symbol_supplier.cc b/src/processor/simple_symbol_supplier.cc index 4a3a1059..bc5ebb68 100644 --- a/src/processor/simple_symbol_supplier.cc +++ b/src/processor/simple_symbol_supplier.cc @@ -84,8 +84,8 @@ SymbolSupplier::SymbolResult SimpleSymbolSupplier::GetSymbolFile( assert(symbol_data); symbol_data->clear(); - SymbolSupplier::SymbolResult s = GetSymbolFile(module, system_info, symbol_file); - + SymbolSupplier::SymbolResult s = GetSymbolFile(module, system_info, + symbol_file); if (s == FOUND) { std::ifstream in(symbol_file->c_str()); std::getline(in, *symbol_data, string::traits_type::to_char_type( @@ -99,22 +99,25 @@ SymbolSupplier::SymbolResult SimpleSymbolSupplier::GetCStringSymbolData( const CodeModule *module, const SystemInfo *system_info, string *symbol_file, - char **symbol_data) { + char **symbol_data, + size_t *symbol_data_size) { assert(symbol_data); + assert(symbol_data_size); string symbol_data_string; SymbolSupplier::SymbolResult s = GetSymbolFile(module, system_info, symbol_file, &symbol_data_string); if (s == FOUND) { - unsigned int size = symbol_data_string.size() + 1; - *symbol_data = new char[size]; + *symbol_data_size = symbol_data_string.size() + 1; + *symbol_data = new char[*symbol_data_size]; if (*symbol_data == NULL) { - BPLOG(ERROR) << "Memory allocation for size " << size << " failed"; + BPLOG(ERROR) << "Memory allocation for size " << *symbol_data_size + << " failed"; return INTERRUPT; } - memcpy(*symbol_data, symbol_data_string.c_str(), size - 1); - (*symbol_data)[size - 1] = '\0'; + memcpy(*symbol_data, symbol_data_string.c_str(), symbol_data_string.size()); + (*symbol_data)[symbol_data_string.size()] = '\0'; memory_buffers_.insert(make_pair(module->code_file(), *symbol_data)); } return s; |