diff -ur include.orig/new include/new
--- include.orig/new	Thu Oct 04 09:46:26 2001
+++ include/new	Sun Jan 12 14:08:03 2003
@@ -1,6 +1,55 @@
-
+#if __DMC__ || __RCC__
 #pragma once
+#endif
+
+#ifndef __NEW
+#define __NEW 1
+
+#include <exception>
+
+
+extern "C++" {
+
+namespace std
+{
+class bad_alloc : public std::exception
+{
+    public:
+	bad_alloc() throw();
+	bad_alloc(const bad_alloc&) throw();
+	bad_alloc& operator=(const bad_alloc&) throw();
+	virtual ~bad_alloc() throw();
+	virtual const char *what() const throw();
+};
+
+struct nothrow_t
+{ };
+
+extern const nothrow_t nothrow;
+
+typedef void (__cdecl *new_handler)();
+
+new_handler __cdecl set_new_handler(new_handler new_p) throw();
+}
+
+void * __cdecl operator new(unsigned) /* throw(std::bad_alloc) */;
+void * __cdecl operator new(unsigned, const std::nothrow_t &) throw();
+void __cdecl operator delete(void *p) /* throw() */;
+//void __cdecl operator delete(void *p, const std::nothrow_t &) throw();
+
+void * operator new(unsigned, void *p) /* throw() */;
+void operator delete(void *p, void *) throw();
+
+#if _ENABLE_ARRAYNEW
+void * __cdecl operator new[](unsigned) /* throw(std::bad_alloc) */;
+void * __cdecl operator new[](unsigned, const std::nothrow_t &) throw();
+void __cdecl operator delete[](void *p) /* throw() */;
+//void __cdecl operator delete[](void *p, const std::nothrow_t &) throw();
+
+void * operator new[](unsigned, void *p) /* throw() */;
+void operator delete[](void *p, void *) throw();
+#endif
+
+}
 
-#ifndef __NEW_H
-#include "new.h"
 #endif
diff -ur include.orig/NEW.H include/NEW.H
--- include.orig/NEW.H	Sat Mar 17 07:15:24 2001
+++ include/NEW.H	Sun Jan 12 15:57:34 2003
@@ -1,47 +1,19 @@
 /* Copyright (C) 1986-2001 by Digital Mars. $Revision: 1.1.1.1 $ */
-#if __SC__ || __RCC__
+#if __DMC__ || __RCC__
 #pragma once
 #endif
 
 #ifndef __NEW_H
 #define __NEW_H 1
 
-/* Define _CRTAPI1 (for compatibility with the NT SDK) */
-#ifndef _CRTAPI1
-#define _CRTAPI1 __cdecl
-#endif
-
-/* Define _CRTAPI2 (for compatibility with the NT SDK) */
-#ifndef _CRTAPI2
-#define _CRTAPI2 __cdecl
-#endif
-
-/* Define CRTIMP */
-#ifndef _CRTIMP
-#if defined(_WIN32) && defined(_DLL)
-#define _CRTIMP  __declspec(dllimport)
-#else
-#define _CRTIMP
-#endif
-#endif
+#include <new>
 
 extern "C++" {
-
-#if !defined(__NEW_DEFINED)  
-
-#define __NEW_DEFINED 1
-void *operator new(unsigned, void *p);
-#if _ENABLE_ARRAYNEW
-void *operator new[](unsigned, void *p);
-#endif
-#endif
-
+typedef void (__cdecl * PFVV)();
 typedef int (__cdecl * _PNH)( unsigned );	//for Microsoft compatibility
-typedef void (* PFVV)();		//as defined in ARM
-
 
 _PNH __cdecl _set_new_handler(_PNH);		//for Microsoft compatibility
-PFVV set_new_handler(PFVV);			//as defined in ARM
-}
+PFVV __cdecl set_new_handler(PFVV);
+};
 
 #endif
diff -ur include.orig/STDDEF.H include/STDDEF.H
--- include.orig/STDDEF.H	Sat Mar 17 07:15:25 2001
+++ include/STDDEF.H	Sun Jan 12 14:07:50 2003
@@ -72,16 +72,6 @@
 #endif 
 #endif 
 
-#if __cplusplus && !__NEW_DEFINED
-#define __NEW_DEFINED 1
-extern "C++" {
-   void *operator new(size_t s, void *at);
-#if _ENABLE_ARRAYNEW
-   void *operator new[](size_t s, void *at);
-#endif
-}
-#endif
-
 #if __cplusplus
 }
 #endif
