From 01adb60ded4e40bcb72ec5fe30f7ec5bf7b9db02 Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Thu, 16 Jan 2025 13:18:14 +0100 Subject: [PATCH] COM: Allow safearray_accessor with NULL SAFEARRAY This allows accessor to be used in the parent scope before checking SAFEARRAY for NULL. Signed-off-by: Simon Rozman --- include/WinStd/COM.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/include/WinStd/COM.h b/include/WinStd/COM.h index 0b712b61..2a3e3add 100644 --- a/include/WinStd/COM.h +++ b/include/WinStd/COM.h @@ -1104,9 +1104,13 @@ namespace winstd /// safearray_accessor(_In_ SAFEARRAY* psa) : m_sa(psa) { - HRESULT hr = SafeArrayAccessData(psa, (void HUGEP**) & m_data); - if (FAILED(hr)) - throw com_runtime_error(hr, "SafeArrayAccessData failed"); + if (psa) { + HRESULT hr = SafeArrayAccessData(psa, (void HUGEP**) & m_data); + if (FAILED(hr)) + throw com_runtime_error(hr, "SafeArrayAccessData failed"); + } + else + m_data = nullptr; } /// @@ -1116,7 +1120,8 @@ namespace winstd /// virtual ~safearray_accessor() { - SafeArrayUnaccessData(m_sa); + if (m_sa) + SafeArrayUnaccessData(m_sa); } ///