diff --git a/docs/changes.txt b/docs/changes.txt index 58b35b97c3..0c2498fcc4 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -143,6 +143,8 @@ wxMSW: errors in wxAccessible methods. - Return DISP_E_MEMBERNOTFOUND error code from wxIAccessible if wxAccessible methods return wxAccStatus::wxACC_NOT_SUPPORTED. +- Return null BSTR from wxIAccessible if string returned from wxAccesible + method is empty. wxOSX: diff --git a/src/msw/ole/access.cpp b/src/msw/ole/access.cpp index 98e11efa87..16ed570f64 100644 --- a/src/msw/ole/access.cpp +++ b/src/msw/ole/access.cpp @@ -1233,8 +1233,16 @@ STDMETHODIMP wxIAccessible::get_accName ( VARIANT varID, BSTR* pszName) } else { - wxBasicString basicString(name); - *pszName = basicString.Get(); + if ( name.empty() ) + { + *pszName = NULL; + return S_FALSE; + } + else + { + wxBasicString basicString(name); + *pszName = basicString.Get(); + } return S_OK; } return E_NOTIMPL; @@ -1406,9 +1414,17 @@ STDMETHODIMP wxIAccessible::get_accValue ( VARIANT varID, BSTR* pszValue) } else { - wxBasicString basicString(strValue); - * pszValue = basicString.Get(); - return S_OK; + if ( strValue.empty() ) + { + *pszValue = NULL; + return S_FALSE; + } + else + { + wxBasicString basicString(strValue); + * pszValue = basicString.Get(); + return S_OK; + } } return E_NOTIMPL; }