summaryrefslogtreecommitdiff
path: root/include/gc_cpp.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/gc_cpp.h')
-rw-r--r--include/gc_cpp.h17
1 files changed, 11 insertions, 6 deletions
diff --git a/include/gc_cpp.h b/include/gc_cpp.h
index 818c582c..ad82dd6f 100644
--- a/include/gc_cpp.h
+++ b/include/gc_cpp.h
@@ -265,9 +265,11 @@ inline void* operator new(size_t size, GCPlacement gcp,
// if we define a multi-argument operator new[].
// There seems to be no way to redirect new in this environment without
// including this everywhere.
+ // Inlining done to avoid mix up of new and delete operators by VC++ 9 (due
+ // to arbitrary ordering during linking).
# if _MSC_VER > 1020
- inline void *operator new[](size_t size)
+ inline void* operator new[](size_t size)
{
return GC_MALLOC_UNCOLLECTABLE(size);
}
@@ -299,11 +301,14 @@ inline void* operator new(size_t size, GCPlacement gcp,
# endif
}
- inline void* operator new[](size_t size, int nBlockUse,
- const char* szFileName, int nLine)
- {
- return operator new(size, nBlockUse, szFileName, nLine);
- }
+# if _MSC_VER > 1020
+ // This new operator is used by VC++ 7+ in Debug builds:
+ inline void* operator new[](size_t size, int nBlockUse,
+ const char* szFileName, int nLine)
+ {
+ return operator new(size, nBlockUse, szFileName, nLine);
+ }
+# endif
#endif // _MSC_VER