diff options
Diffstat (limited to 'include/gc_cpp.h')
-rw-r--r-- | include/gc_cpp.h | 17 |
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 |