aboutsummaryrefslogtreecommitdiff
path: root/goo/gmempp.cc
diff options
context:
space:
mode:
Diffstat (limited to 'goo/gmempp.cc')
-rw-r--r--goo/gmempp.cc51
1 files changed, 51 insertions, 0 deletions
diff --git a/goo/gmempp.cc b/goo/gmempp.cc
new file mode 100644
index 0000000..fe5790b
--- /dev/null
+++ b/goo/gmempp.cc
@@ -0,0 +1,51 @@
+//========================================================================
+//
+// gmempp.cc
+//
+// Use gmalloc/gfree for C++ new/delete operators.
+//
+// Copyright 1996-2003 Glyph & Cog, LLC
+//
+//========================================================================
+
+#include <aconf.h>
+#include "gmem.h"
+// NB: do not include gmempp.h here.
+
+#ifdef DEBUG_MEM
+
+void *operator new(size_t size) {
+ return gmalloc((int)size, 1);
+}
+
+void *operator new(size_t size, int dummy) {
+ return gmalloc((int)size, 0);
+}
+
+void *operator new[](size_t size) {
+ return gmalloc((int)size, 1);
+}
+
+void *operator new[](size_t size, int dummy) {
+ return gmalloc((int)size, 0);
+}
+
+void operator delete(void *p) {
+ gfree(p);
+}
+
+// This is only called if a constructor throws an exception.
+void operator delete(void *p, int dummy) {
+ gfree(p);
+}
+
+void operator delete[](void *p) {
+ gfree(p);
+}
+
+// This is only called if a constructor throws an exception.
+void operator delete[](void *p, int dummy) {
+ gfree(p);
+}
+
+#endif