summaryrefslogtreecommitdiff
path: root/gc_cpp.cc
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2015-05-04 20:28:24 +0300
committerIvan Maidanski <ivmai@mail.ru>2015-05-11 19:10:55 +0300
commit3379238e443843670f9bbe3089346735cb97a372 (patch)
tree8bdd22586b04b2d76ad38e0f3a5030843db0b7c1 /gc_cpp.cc
parent28272d58b8ca59f88703e8911d84bfc98f558f99 (diff)
downloadbdwgc-3379238e443843670f9bbe3089346735cb97a372.tar.gz
Restore definition of new/delete operators in gc_cpp.cc (for non-VC)
(revert part of commit 3d784ed) * gc_cpp.cc (new, delete, new[], delete[]): Add definition (unless _MSC_VER defined). Conflicts: gc_cpp.cc
Diffstat (limited to 'gc_cpp.cc')
-rw-r--r--gc_cpp.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/gc_cpp.cc b/gc_cpp.cc
index 5cf305e0..78b4eeda 100644
--- a/gc_cpp.cc
+++ b/gc_cpp.cc
@@ -42,3 +42,27 @@ built-in "new" and "delete".
# define GC_DECL_NEW_THROW /* empty */
# define GC_DECL_DELETE_THROW /* empty */
#endif /* !GC_NEW_DELETE_NEED_THROW */
+
+#ifndef _MSC_VER
+
+ void* operator new(size_t size) GC_DECL_NEW_THROW {
+ return GC_MALLOC_UNCOLLECTABLE(size);
+ }
+
+# if !defined(__CYGWIN__)
+ void operator delete(void* obj) GC_DECL_DELETE_THROW {
+ GC_FREE(obj);
+ }
+# endif // !__CYGWIN__
+
+# ifdef GC_OPERATOR_NEW_ARRAY
+ void* operator new[](size_t size) GC_DECL_NEW_THROW {
+ return GC_MALLOC_UNCOLLECTABLE(size);
+ }
+
+ void operator delete[](void* obj) GC_DECL_DELETE_THROW {
+ GC_FREE(obj);
+ }
+# endif // GC_OPERATOR_NEW_ARRAY
+
+#endif // !_MSC_VER