occt: master 4db4247a

Author Committer Branch Timestamp Parent
abv abv master 2016-01-07 07:02:16 master e085d8a6
Changeset 0024836: Stack overflow when raising exception in low memory condition

Standard_OutOfMemory exception is refactored so as to avoid memory allocations (which will likely fail) when it is raised:

- method NewInstance() returns static instance (singleton)
- method Raise() raises copy of that singleton, resetting its message string
- message string is stored as field, not allocated dynamically (thus maximum message length is limited by buffer size)

Class Standard_Failure slightly revised: method Destroy() is merged to destructor, methods Get/SetMessageString() are made virtual.

Add test case for the bug
mod - src/NCollection/NCollection_WinHeapAllocator.cxx Diff File
mod - src/QABugs/QABugs_20.cxx Diff File
mod - src/Standard/FILES Diff File
mod - src/Standard/Standard_Failure.cxx Diff File
mod - src/Standard/Standard_Failure.hxx Diff File
rm - src/Standard/Standard_Failure.lxx Diff File
mod - src/Standard/Standard_MMgrOpt.cxx Diff File
add - src/Standard/Standard_OutOfMemory.cxx Diff File
mod - src/Standard/Standard_OutOfMemory.hxx Diff File
add - tests/bugs/fclasses/bug24836 Diff File