Module: wine Branch: master Commit: a9686b0037126008cd5935eb45a100095d022415 URL: https://source.winehq.org/git/wine.git/?a=commit;h=a9686b0037126008cd5935eb4...
Author: Gijs Vermeulen gijsvrm@gmail.com Date: Wed Jan 17 22:34:28 2018 +0100
ole2disp.dll16: Implement SafeArrayGet[UBound|LBound].
Signed-off-by: Gijs Vermeulen gijsvrm@gmail.com Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ole2disp.dll16/ole2disp.c | 36 +++++++++++++++++++++++++++++++++ dlls/ole2disp.dll16/ole2disp.dll16.spec | 4 ++-- 2 files changed, 38 insertions(+), 2 deletions(-)
diff --git a/dlls/ole2disp.dll16/ole2disp.c b/dlls/ole2disp.dll16/ole2disp.c index d61b5e8..98aca3d 100644 --- a/dlls/ole2disp.dll16/ole2disp.c +++ b/dlls/ole2disp.dll16/ole2disp.c @@ -117,6 +117,42 @@ USHORT WINAPI SafeArrayGetElemsize16(SAFEARRAY16 *sa) }
/****************************************************************************** + * SafeArrayGetUBound [OLE2DISP.19] + */ +HRESULT WINAPI SafeArrayGetUBound16(SAFEARRAY16 *sa, UINT16 dim, LONG *ubound) +{ + TRACE("(%p, %u, %p)\n", sa, dim, ubound); + + if (!sa) + return E_INVALIDARG16; + + if (!dim || dim > sa->cDims) + return DISP_E_BADINDEX; + + *ubound = sa->rgsabound[sa->cDims - dim].lLbound + sa->rgsabound[sa->cDims - dim].cElements - 1; + + return S_OK; +} + +/****************************************************************************** + * SafeArrayGetLBound [OLE2DISP.20] + */ +HRESULT WINAPI SafeArrayGetLBound16(SAFEARRAY16 *sa, UINT16 dim, LONG *lbound) +{ + TRACE("(%p, %u, %p)\n", sa, dim, lbound); + + if (!sa) + return E_INVALIDARG16; + + if (!dim || dim > sa->cDims) + return DISP_E_BADINDEX; + + *lbound = sa->rgsabound[sa->cDims - dim].lLbound; + + return S_OK; +} + +/****************************************************************************** * SafeArrayLock [OLE2DISP.21] */ HRESULT WINAPI SafeArrayLock16(SAFEARRAY16 *sa) diff --git a/dlls/ole2disp.dll16/ole2disp.dll16.spec b/dlls/ole2disp.dll16/ole2disp.dll16.spec index 4b8af41..7b00ac3 100644 --- a/dlls/ole2disp.dll16/ole2disp.dll16.spec +++ b/dlls/ole2disp.dll16/ole2disp.dll16.spec @@ -16,8 +16,8 @@ 16 stub SAFEARRAYDESTROY 17 pascal -ret16 SafeArrayGetDim(ptr) SafeArrayGetDim16 18 pascal -ret16 SafeArrayGetElemsize(ptr) SafeArrayGetElemsize16 -19 stub SAFEARRAYGETUBOUND -20 stub SAFEARRAYGETLBOUND +19 pascal SafeArrayGetUBound(ptr word ptr) SafeArrayGetUBound16 +20 pascal SafeArrayGetLBound(ptr word ptr) SafeArrayGetLBound16 21 pascal SafeArrayLock(ptr) SafeArrayLock16 22 pascal SafeArrayUnlock(ptr) SafeArrayUnlock16 23 pascal SafeArrayAccessData(ptr ptr) SafeArrayAccessData16