summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gc_cpp.cc84
-rw-r--r--include/gc_cpp.h49
2 files changed, 81 insertions, 52 deletions
diff --git a/gc_cpp.cc b/gc_cpp.cc
index 0f6c9d2b..279ccf46 100644
--- a/gc_cpp.cc
+++ b/gc_cpp.cc
@@ -43,46 +43,44 @@ built-in "new" and "delete".
# define GC_DECL_DELETE_THROW /* empty */
#endif /* !GC_NEW_DELETE_NEED_THROW */
-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 */
-
-#ifdef _MSC_VER
-
- // This new operator is used by VC++ in case of Debug builds!
- void* operator new( size_t size, int /* nBlockUse */,
- const char * szFileName, int nLine ) GC_DECL_NEW_THROW
- {
-# ifndef GC_DEBUG
- return GC_malloc_uncollectable(size);
-# else
- return GC_debug_malloc_uncollectable(size, szFileName, nLine);
-# endif
- }
-
-# if _MSC_VER > 1020
- // This new operator is used by VC++ 7.0 and later in Debug builds.
- void* operator new[]( size_t size, int nBlockUse,
- const char* szFileName, int nLine ) GC_DECL_NEW_THROW
- {
- return operator new(size, nBlockUse, szFileName, nLine);
- }
-# endif
-
-#endif /* _MSC_VER */
+// MOVED TO HEADER!
+//void* operator new( size_t size ) {
+// return GC_MALLOC_UNCOLLECTABLE( size );}
+//
+//void operator delete( void* obj ) {
+// GC_FREE( obj );}
+//
+//#ifdef GC_OPERATOR_NEW_ARRAY
+//
+//void* operator new[]( size_t size ) {
+// return GC_MALLOC_UNCOLLECTABLE( size );}
+//
+//void operator delete[]( void* obj ) {
+// GC_FREE( obj );}
+//
+//#endif /* GC_OPERATOR_NEW_ARRAY */
+//
+//#ifdef _MSC_VER
+//
+//// This new operator is used by VC++ in case of Debug builds !
+//void* operator new( size_t size,
+// int ,//nBlockUse,
+// const char * szFileName,
+// int nLine )
+//{
+//#ifndef GC_DEBUG
+// return GC_malloc_uncollectable( size );
+//#else
+// return GC_debug_malloc_uncollectable(size, szFileName, nLine);
+//#endif
+//}
+//
+//#if _MSC_VER > 1020
+//// This new operator is used by VC++ 7.0 and later in Debug builds.
+//void* operator new[](size_t size, int nBlockUse, const char* szFileName, int nLine)
+//{
+// return operator new(size, nBlockUse, szFileName, nLine);
+//}
+//#endif
+//
+//#endif /* _MSC_VER */
diff --git a/include/gc_cpp.h b/include/gc_cpp.h
index b4fe6daa..35b5b631 100644
--- a/include/gc_cpp.h
+++ b/include/gc_cpp.h
@@ -278,17 +278,48 @@ inline void* operator new( size_t size, GC_NS_QUALIFY(GCPlacement) gcp,
* There seems to be no way to redirect new in this environment without
* including this everywhere.
*/
-# if _MSC_VER > 1020
- void *operator new[]( size_t size );
- void operator delete[]( void* obj );
-# endif
+#if _MSC_VER > 1020
+inline void *operator new[]( size_t size ){
+ return GC_MALLOC_UNCOLLECTABLE( size );}
+
+inline void operator delete[]( void* obj ) {
+ GC_FREE( obj );}
+
+#endif
+
- void* operator new( size_t size );
- void operator delete( void* obj );
+// void* operator new( size_t size);
+// void operator delete(void* obj);
+
+ // MOVED HERE FROM gc_hpp.cc!
+ inline void* operator new(size_t size)
+ {
+ return GC_MALLOC_UNCOLLECTABLE(size);
+ }
+
+ inline void operator delete(void* obj)
+ {
+ GC_FREE(obj);
+ }
+
+
+ // This new operator is used by VC++ in case of Debug builds !
+ inline void* operator new( size_t size,
+ int ,//nBlockUse,
+ const char * szFileName,
+ int nLine )
+ {
+#ifndef GC_DEBUG
+ return GC_malloc_uncollectable( size );
+#else
+ return GC_debug_malloc_uncollectable(size, szFileName, nLine);
+#endif
+ }
+inline void* operator new[](size_t size, int nBlockUse, const char* szFileName, int nLine)
+{
+ return operator new(size, nBlockUse, szFileName, nLine);
+}
- // This new operator is used by VC++ in case of Debug builds !
- void* operator new( size_t size, int /* nBlockUse */,
- const char * szFileName, int nLine );
#endif /* _MSC_VER */
#ifdef GC_OPERATOR_NEW_ARRAY