aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/flext/source/flsupport.h
diff options
context:
space:
mode:
Diffstat (limited to 'externals/grill/flext/source/flsupport.h')
-rw-r--r--externals/grill/flext/source/flsupport.h19
1 files changed, 13 insertions, 6 deletions
diff --git a/externals/grill/flext/source/flsupport.h b/externals/grill/flext/source/flsupport.h
index 2541e243..06337150 100644
--- a/externals/grill/flext/source/flsupport.h
+++ b/externals/grill/flext/source/flsupport.h
@@ -16,7 +16,7 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#define __FLSUPPORT_H
#include "flstdc.h"
-
+#include <new>
class FLEXT_SHARE FLEXT_CLASSDEF(flext_root);
typedef class FLEXT_CLASSDEF(flext_root) flext_root;
@@ -65,16 +65,23 @@ public:
//! @} FLEXT_S_MEMORY
};
+#ifndef _MSC_VER
+#define NEWTHROW throw(std::bad_alloc)
+#define DELTHROW throw()
+#else
+#define NEWTHROW
+#define DELTHROW
+#endif
+
// define global new/delete operators
-inline void *operator new(size_t bytes) { return flext_root::operator new(bytes); }
-inline void operator delete(void *blk) { flext_root::operator delete(blk); }
+inline void *operator new(size_t bytes) NEWTHROW { return flext_root::operator new(bytes); }
+inline void operator delete(void *blk) DELTHROW { flext_root::operator delete(blk); }
#ifndef __MRC__ // doesn't allow new[] overloading?!
-inline void *operator new[](size_t bytes) { return flext_root::operator new[](bytes); }
-inline void operator delete[](void *blk) { flext_root::operator delete[](blk); }
+inline void *operator new[](size_t bytes) NEWTHROW { return flext_root::operator new[](bytes); }
+inline void operator delete[](void *blk) DELTHROW { flext_root::operator delete[](blk); }
#endif
-
class FLEXT_SHARE FLEXT_CLASSDEF(flext);
typedef class FLEXT_CLASSDEF(flext) flext;