aboutsummaryrefslogtreecommitdiff
path: root/goo/gmempp.cc
diff options
context:
space:
mode:
authorCalvin Morrison <calvin@pobox.com>2023-04-05 14:13:39 -0400
committerCalvin Morrison <calvin@pobox.com>2023-04-05 14:13:39 -0400
commit835e373b3eeaabcd0621ed6798ab500f37982fae (patch)
treedfa16b0e2e1b4956b38f693220eac4e607802133 /goo/gmempp.cc
xpdf-no-select-disableHEADmaster
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