Commit cfbac8d2 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

ole2disp: Implement SafeArrayAccessData()/SafeArrayUnaccessData().

parent 668e9754
......@@ -89,6 +89,15 @@ static ULONG safearray_getcellcount(const SAFEARRAY16 *sa)
return cells;
}
static HRESULT safearray_lock(SAFEARRAY16 *sa)
{
if (sa->cLocks == 0xffff)
return E_UNEXPECTED;
sa->cLocks++;
return S_OK;
}
/******************************************************************************
* SafeArrayGetDim [OLE2DISP.17]
*/
......@@ -117,11 +126,7 @@ HRESULT WINAPI SafeArrayLock16(SAFEARRAY16 *sa)
if (!sa)
return E_INVALIDARG16;
if (sa->cLocks == 0xffff)
return E_UNEXPECTED;
sa->cLocks++;
return S_OK;
return safearray_lock(sa);
}
/******************************************************************************
......@@ -142,6 +147,34 @@ HRESULT WINAPI SafeArrayUnlock16(SAFEARRAY16 *sa)
}
/******************************************************************************
* SafeArrayAccessData [OLE2DISP.23]
*/
HRESULT WINAPI SafeArrayAccessData16(SAFEARRAY16 *sa, SEGPTR *data)
{
HRESULT hr;
TRACE("(%p, %p)\n", sa, data);
/* arguments are not tested, it crashes if any of them is NULL */
hr = safearray_lock(sa);
if (FAILED(hr))
return hr;
*data = sa->pvData;
return S_OK;
}
/******************************************************************************
* SafeArrayUnaccessData [OLE2DISP.24]
*/
HRESULT WINAPI SafeArrayUnaccessData16(SAFEARRAY16 *sa)
{
TRACE("(%p)\n", sa);
return SafeArrayUnlock16(sa);
}
/******************************************************************************
* SafeArrayAllocDescriptor [OLE2DISP.38]
*/
HRESULT WINAPI SafeArrayAllocDescriptor16(UINT16 dims, SEGPTR *ret)
......
......@@ -20,8 +20,8 @@
20 stub SAFEARRAYGETLBOUND
21 pascal SafeArrayLock(ptr) SafeArrayLock16
22 pascal SafeArrayUnlock(ptr) SafeArrayUnlock16
23 stub SAFEARRAYACCESSDATA
24 stub SAFEARRAYUNACCESSDATA
23 pascal SafeArrayAccessData(ptr ptr) SafeArrayAccessData16
24 pascal SafeArrayUnaccessData(ptr) SafeArrayUnaccessData16
25 stub SAFEARRAYGETELEMENT
26 stub SAFEARRAYPUTELEMENT
27 stub SAFEARRAYCOPY
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment