Changeset 34069 in webkit for trunk/JavaScriptCore
- Timestamp:
- May 23, 2008, 2:38:30 AM (17 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r34067 r34069 1 2008-05-23 Mark Rowe <[email protected]> 2 3 Reviewed by Oliver Hunt. 4 5 Fix <rdar://problem/5954997> global-recursion-on-full-stack.html crashes under guardmalloc. 6 7 Growing the register file with uncheckedGrow from within Machine::execute is not safe as the 8 register file may be too close to its maximum size to grow successfully. By using grow, 9 checking the result and throwing a stack overflow error we can avoid crashing. 10 11 * VM/Machine.cpp: 12 (KJS::Machine::execute): 13 * VM/RegisterFile.h: Remove the now-unused uncheckedGrow. 14 1 15 2008-05-23 Oliver Hunt <[email protected]> 2 16 -
trunk/JavaScriptCore/VM/Machine.cpp
r34067 r34069 657 657 registerFile->addGlobalSlots(codeBlock->numVars); 658 658 659 registerFile->uncheckedGrow(codeBlock->numTemporaries); 659 if (!registerFile->grow(codeBlock->numTemporaries)) { 660 registerFileStack->popGlobalRegisterFile(); 661 *exception = createStackOverflowError(exec); 662 return 0; 663 } 660 664 Register* r = (*registerFile->basePointer()); 661 665 -
trunk/JavaScriptCore/VM/RegisterFile.h
r33979 r34069 125 125 return true; 126 126 } 127 128 void uncheckedGrow(size_t size)129 {130 if (size > m_size) {131 if (size > m_capacity)132 growBuffer(size, std::numeric_limits<size_t>::max());133 134 m_size = size;135 }136 }137 127 138 128 size_t size() { return m_size; }
Note:
See TracChangeset
for help on using the changeset viewer.