summaryrefslogtreecommitdiff
path: root/src/memory.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/memory.cc')
-rw-r--r--src/memory.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/memory.cc b/src/memory.cc
index f8719e7..16167ff 100644
--- a/src/memory.cc
+++ b/src/memory.cc
@@ -41,6 +41,27 @@ void * operator new(size_t size) {
}
+namespace std {
+ struct nothrow_t {};
+}
+
+__attribute__((weak))
+void * operator new(size_t size, const std::nothrow_t &) throw() {
+
+ void * mem = malloc(size);
+ while(mem == NULL) {
+ if(new_handl != NULL) {
+ new_handl();
+ } else {
+ return NULL;
+ }
+ mem = malloc(size);
+ }
+
+ return mem;
+}
+
+
__attribute__((weak))
void operator delete(void * ptr) {
free(ptr);