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 <simon@rozman.si>
This commit is contained in:
Simon Rozman 2025-01-16 13:18:14 +01:00
parent e1d4e03831
commit 01adb60ded

View File

@ -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);
}
///