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,10 +1104,14 @@ namespace winstd
/// ///
safearray_accessor(_In_ SAFEARRAY* psa) : m_sa(psa) safearray_accessor(_In_ SAFEARRAY* psa) : m_sa(psa)
{ {
if (psa) {
HRESULT hr = SafeArrayAccessData(psa, (void HUGEP**) & m_data); HRESULT hr = SafeArrayAccessData(psa, (void HUGEP**) & m_data);
if (FAILED(hr)) if (FAILED(hr))
throw com_runtime_error(hr, "SafeArrayAccessData failed"); throw com_runtime_error(hr, "SafeArrayAccessData failed");
} }
else
m_data = nullptr;
}
/// ///
/// Decrements the lock count of an array. /// Decrements the lock count of an array.
@ -1116,6 +1120,7 @@ namespace winstd
/// ///
virtual ~safearray_accessor() virtual ~safearray_accessor()
{ {
if (m_sa)
SafeArrayUnaccessData(m_sa); SafeArrayUnaccessData(m_sa);
} }