From: Rémi Bernon <rbernon@codeweavers.com> --- include/Makefile.in | 2 ++ include/msvcrt/new.h | 25 +++++++++++++++ include/msvcrt/vcruntime_new.h | 58 ++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 include/msvcrt/new.h create mode 100644 include/msvcrt/vcruntime_new.h diff --git a/include/Makefile.in b/include/Makefile.in index 266d2451fef..ef1c65aeeed 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -556,6 +556,7 @@ SOURCES = \ msvcrt/mbctype.h \ msvcrt/mbstring.h \ msvcrt/memory.h \ + msvcrt/new.h \ msvcrt/process.h \ msvcrt/search.h \ msvcrt/setjmp.h \ @@ -579,6 +580,7 @@ SOURCES = \ msvcrt/unistd.h \ msvcrt/vadefs.h \ msvcrt/vcruntime_exception.h \ + msvcrt/vcruntime_new.h \ msvcrt/vcruntime_typeinfo.h \ msvcrt/wchar.h \ msvcrt/wctype.h \ diff --git a/include/msvcrt/new.h b/include/msvcrt/new.h new file mode 100644 index 00000000000..721e1d3cdb4 --- /dev/null +++ b/include/msvcrt/new.h @@ -0,0 +1,25 @@ +/* + * Copyright 2026 Jacek Caban for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef _INC_NEW +#define _INC_NEW + +#include <corecrt.h> +#include <vcruntime_new.h> + +#endif /* _INC_NEW */ diff --git a/include/msvcrt/vcruntime_new.h b/include/msvcrt/vcruntime_new.h new file mode 100644 index 00000000000..c10fb9740e5 --- /dev/null +++ b/include/msvcrt/vcruntime_new.h @@ -0,0 +1,58 @@ +/* + * Copyright 2024 Rémi Bernon for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __VCRUNTIME_NEW_H +#define __VCRUNTIME_NEW_H + +namespace std +{ +enum class align_val_t : size_t {}; +struct nothrow_t {}; +extern nothrow_t const nothrow; +} /* namespace std */ + +void *__cdecl operator new(size_t size); +void *__cdecl operator new[](size_t size); +void __cdecl operator delete(void *ptr) noexcept; +void __cdecl operator delete[](void *ptr) noexcept; +void __cdecl operator delete(void *ptr, size_t size) noexcept; +void __cdecl operator delete[](void *ptr, size_t size) noexcept; + +void *__cdecl operator new(size_t size, std::align_val_t align); +void *__cdecl operator new[](size_t size, std::align_val_t align); +void __cdecl operator delete(void *ptr, std::align_val_t align) noexcept; +void __cdecl operator delete[](void *ptr, std::align_val_t align) noexcept; +void __cdecl operator delete(void *ptr, size_t size, std::align_val_t align) noexcept; +void __cdecl operator delete[](void *ptr, size_t size, std::align_val_t align) noexcept; + +void *__cdecl operator new(size_t size, std::nothrow_t const&) noexcept; +void *__cdecl operator new[](size_t size, std::nothrow_t const&) noexcept; +void __cdecl operator delete(void *ptr, std::nothrow_t const&) noexcept; +void __cdecl operator delete[](void *ptr, std::nothrow_t const&) noexcept; + +void *__cdecl operator new(size_t size, std::align_val_t align, std::nothrow_t const&) noexcept; +void *__cdecl operator new[](size_t size, std::align_val_t align, std::nothrow_t const&) noexcept; +void __cdecl operator delete(void *ptr, std::align_val_t align, std::nothrow_t const&) noexcept; +void __cdecl operator delete[](void *ptr, std::align_val_t align, std::nothrow_t const&) noexcept; + +inline void *operator new(size_t size, void *ptr) noexcept { return ptr; } +inline void *operator new[](size_t size, void *ptr) throw() { return ptr; } +inline void operator delete(void*, void*) noexcept {} +inline void operator delete[](void*, void*) noexcept {} + +#endif /* __WINE_NEW_H */ -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10161