[PATCH] ole2disp.dll16: Implement SafeArrayGet[UBound|LBound].

Nikolay Sivov bunglehead at gmail.com
Tue Jan 16 11:36:49 CST 2018


On 1/16/2018 8:28 PM, Gijs Vermeulen wrote:
> Signed-off-by: Gijs Vermeulen <gijsvrm at gmail.com>
> ---
>  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 d61b5e8c5a..fb2dde6db2 100644
> --- a/dlls/ole2disp.dll16/ole2disp.c
> +++ b/dlls/ole2disp.dll16/ole2disp.c
> @@ -116,6 +116,42 @@ USHORT WINAPI SafeArrayGetElemsize16(SAFEARRAY16 *sa)
>      return sa->cbElements;
>  }
>  
> +/******************************************************************************
> + *    SafeArrayGetUBound [OLE2DISP.19]
> + */
> +HRESULT WINAPI SafeArrayGetUBound16(SAFEARRAY *sa, UINT16 dim, LONG *ubound)
> +{
> +    TRACE("(%p,%u,%p)\n", sa, dim, ubound);
> +
> +    if (!sa || !ubound)
> +        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(SAFEARRAY *sa, UINT16 dim, LONG *lbound)
> +{
> +    TRACE("(%p,%u,%p)\n", sa, dim, lbound);
> +
> +    if (!sa || !lbound)
> +        return E_INVALIDARG16;
> +
> +    if(!dim || dim > sa->cDims)
> +        return DISP_E_BADINDEX;
> +
> +    *lbound = sa->rgsabound[sa->cDims - dim].lLbound;
> +
> +    return S_OK;
> +}
> +

Have you tested this? This looks like it can't work. I know we don't
have integrated win16 tests, but simple program will work.

>  /******************************************************************************
>   *    SafeArrayLock [OLE2DISP.21]
>   */
> diff --git a/dlls/ole2disp.dll16/ole2disp.dll16.spec b/dlls/ole2disp.dll16/ole2disp.dll16.spec
> index 4b8af41172..7b00ac353b 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
> 




More information about the wine-devel mailing list