7017009: Secondary out of c-heap memory error reporting out of memory
Summary: Use os::malloc() to allocate buffer to read elf symbols and check for null
Reviewed-by: zgu, phh, dsamersoff, dholmes, dcubed
--- a/hotspot/src/share/vm/utilities/elfSymbolTable.cpp Wed Feb 02 18:38:40 2011 -0500
+++ b/hotspot/src/share/vm/utilities/elfSymbolTable.cpp Thu Feb 03 21:30:08 2011 -0500
@@ -39,13 +39,14 @@
// try to load the string table
long cur_offset = ftell(file);
if (cur_offset != -1) {
- m_symbols = (Elf_Sym*)NEW_C_HEAP_ARRAY(char, shdr.sh_size);
+ // call malloc so we can back up if memory allocation fails.
+ m_symbols = (Elf_Sym*)os::malloc(shdr.sh_size);
if (m_symbols) {
if (fseek(file, shdr.sh_offset, SEEK_SET) ||
fread((void*)m_symbols, shdr.sh_size, 1, file) != 1 ||
fseek(file, cur_offset, SEEK_SET)) {
m_status = Decoder::file_invalid;
- FREE_C_HEAP_ARRAY(char, m_symbols);
+ os::free(m_symbols);
m_symbols = NULL;
}
}
@@ -59,7 +60,7 @@
ElfSymbolTable::~ElfSymbolTable() {
if (m_symbols != NULL) {
- FREE_C_HEAP_ARRAY(char, m_symbols);
+ os::free(m_symbols);
}
if (m_next != NULL) {