https://git.reactos.org/?p=reactos.git;a=commitdiff;h=b48e77e15bce680cc819cb45a32e17ae107b8a52
commit b48e77e15bce680cc819cb45a32e17ae107b8a52 Author: Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com> AuthorDate: Wed Jan 3 16:45:23 2024 +0900 Commit: GitHub <nore...@github.com> CommitDate: Wed Jan 3 16:45:23 2024 +0900 [CTFMON][MSCTFIME][SDK] Define new(cicNoThrow) and use it (#6286) Use new(cicNoThrow) instead of plain operator new. JIRA issue: CORE-19360 - Define CicNoThrow structure and cicNoThrow macro in <cicero/cicbase.h>. - Use new(cicNoThrow) instead of plain operator new. --- base/applications/ctfmon/ctfmon.cpp | 2 +- dll/ime/msctfime/msctfime.cpp | 20 ++++++++++---------- sdk/include/reactos/cicero/cicbase.h | 23 ++++++++++++++++++----- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/base/applications/ctfmon/ctfmon.cpp b/base/applications/ctfmon/ctfmon.cpp index 5ea37a4eb20..6c255f18b2e 100644 --- a/base/applications/ctfmon/ctfmon.cpp +++ b/base/applications/ctfmon/ctfmon.cpp @@ -224,7 +224,7 @@ InitApp( CRegWatcher::Init(); // Create Tipbar loader window - g_pLoaderWnd = new CLoaderWnd(); + g_pLoaderWnd = new(cicNoThrow) CLoaderWnd(); if (!g_pLoaderWnd || !g_pLoaderWnd->Init()) return FALSE; diff --git a/dll/ime/msctfime/msctfime.cpp b/dll/ime/msctfime/msctfime.cpp index 319c7de72b6..30b0191a34d 100644 --- a/dll/ime/msctfime/msctfime.cpp +++ b/dll/ime/msctfime/msctfime.cpp @@ -1598,7 +1598,7 @@ CFunctionProvider::GetFunction( if (IsEqualGUID(guid, GUID_NULL) && IsEqualIID(riid, IID_IAImmFnDocFeed)) { - *func = new CFnDocFeed(); + *func = new(cicNoThrow) CFnDocFeed(); if (*func) return S_OK; } @@ -2147,7 +2147,7 @@ CicProfile::InitProfileInstance(_Inout_ TLS *pTLS) if (!m_pActiveLanguageProfileNotifySink) { CActiveLanguageProfileNotifySink *pSink = - new CActiveLanguageProfileNotifySink( + new(cicNoThrow) CActiveLanguageProfileNotifySink( CicProfile::ActiveLanguageProfileNotifySinkCallback, this); if (!pSink) { @@ -2326,7 +2326,7 @@ CicBridge::CreateInputContext( CicInputContext *pCicIC = imeContext.get().m_pCicIC; if (!pCicIC) { - pCicIC = new CicInputContext(m_cliendId, &m_LibThread, hIMC); + pCicIC = new(cicNoThrow) CicInputContext(m_cliendId, &m_LibThread, hIMC); if (!pCicIC) { imeContext.unlock(); @@ -2531,7 +2531,7 @@ CicBridge::ActivateIMMX( return hr; } - CFunctionProvider *pProvider = new CFunctionProvider(m_cliendId); + CFunctionProvider *pProvider = new(cicNoThrow) CFunctionProvider(m_cliendId); if (!pProvider) { hr = E_FAIL; @@ -2645,7 +2645,7 @@ CicBridge::InitIMMX(_Inout_ TLS *pTLS) if (!m_pThreadMgrEventSink) { m_pThreadMgrEventSink = - new CThreadMgrEventSink(CThreadMgrEventSink::DIMCallback, NULL, NULL); + new(cicNoThrow) CThreadMgrEventSink(CThreadMgrEventSink::DIMCallback, NULL, NULL); if (!m_pThreadMgrEventSink) { UnInitIMMX(pTLS); @@ -2658,7 +2658,7 @@ CicBridge::InitIMMX(_Inout_ TLS *pTLS) if (!pTLS->m_pProfile) { - pTLS->m_pProfile = new CicProfile(); + pTLS->m_pProfile = new(cicNoThrow) CicProfile(); if (!pTLS->m_pProfile) return E_OUTOFMEMORY; @@ -3297,7 +3297,7 @@ CtfImeCreateThreadMgr(VOID) if (!pTLS->m_pBridge) { - pTLS->m_pBridge = new CicBridge(); + pTLS->m_pBridge = new(cicNoThrow) CicBridge(); if (!pTLS->m_pBridge) return E_OUTOFMEMORY; } @@ -3337,7 +3337,7 @@ CtfImeDestroyThreadMgr(VOID) if (pTLS->m_pBridge) { - pTLS->m_pBridge = new CicBridge(); + pTLS->m_pBridge = new(cicNoThrow) CicBridge(); if (!pTLS->m_pBridge) return E_OUTOFMEMORY; } @@ -3604,7 +3604,7 @@ UI::~UI() */ HRESULT UI::_Create() { - m_pComp = new UIComposition(); + m_pComp = new(cicNoThrow) UIComposition(); if (!m_pComp) return E_OUTOFMEMORY; @@ -3630,7 +3630,7 @@ void UI::OnCreate(HWND hWnd) UI *pUI = (UI*)GetWindowLongPtrW(hWnd, UIGWLP_UI); if (pUI) return; - pUI = new UI(hWnd); + pUI = new(cicNoThrow) UI(hWnd); if (pUI) pUI->_Create(); } diff --git a/sdk/include/reactos/cicero/cicbase.h b/sdk/include/reactos/cicero/cicbase.h index 14958780ba3..d1c76a09957 100644 --- a/sdk/include/reactos/cicero/cicbase.h +++ b/sdk/include/reactos/cicero/cicbase.h @@ -34,17 +34,30 @@ static inline void cicMemFree(LPVOID ptr) LocalFree(ptr); } -inline void* __cdecl operator new(size_t size) noexcept +struct CicNoThrow { }; +#define cicNoThrow CicNoThrow{} + +inline void* operator new(size_t size, const CicNoThrow&) noexcept { return cicMemAllocClear(size); } - -inline void __cdecl operator delete(void* ptr) noexcept +inline void* operator new[](size_t size, const CicNoThrow&) noexcept +{ + return cicMemAllocClear(size); +} +inline void operator delete(void* ptr) noexcept { cicMemFree(ptr); } - -inline void __cdecl operator delete(void* ptr, size_t size) noexcept +inline void operator delete[](void* ptr) noexcept +{ + cicMemFree(ptr); +} +inline void operator delete(void* ptr, size_t size) noexcept +{ + cicMemFree(ptr); +} +inline void operator delete[](void* ptr, size_t size) noexcept { cicMemFree(ptr); }