diff --git a/dlls/ole2disp.dll16/ole2disp.c b/dlls/ole2disp.dll16/ole2disp.c index 20b7b6c3390..af6f03cbb6c 100644 --- a/dlls/ole2disp.dll16/ole2disp.c +++ b/dlls/ole2disp.dll16/ole2disp.c @@ -107,6 +107,40 @@ USHORT WINAPI SafeArrayGetElemsize16(SAFEARRAY16 *sa) return sa->cbElements; } +/****************************************************************************** + * SafeArrayLock [OLE2DISP.21] + */ +HRESULT WINAPI SafeArrayLock16(SAFEARRAY16 *sa) +{ + TRACE("(%p)\n", sa); + + if (!sa) + return E_INVALIDARG16; + + if (sa->cLocks == 0xffff) + return E_UNEXPECTED; + + sa->cLocks++; + return S_OK; +} + +/****************************************************************************** + * SafeArrayUnlock [OLE2DISP.22] + */ +HRESULT WINAPI SafeArrayUnlock16(SAFEARRAY16 *sa) +{ + TRACE("(%p)\n", sa); + + if (!sa) + return E_INVALIDARG16; + + if (sa->cLocks == 0) + return E_UNEXPECTED; + + sa->cLocks--; + return S_OK; +} + /****************************************************************************** * SafeArrayAllocDescriptor [OLE2DISP.38] */ diff --git a/dlls/ole2disp.dll16/ole2disp.dll16.spec b/dlls/ole2disp.dll16/ole2disp.dll16.spec index ca884a086f3..b0db9201206 100644 --- a/dlls/ole2disp.dll16/ole2disp.dll16.spec +++ b/dlls/ole2disp.dll16/ole2disp.dll16.spec @@ -18,8 +18,8 @@ 18 pascal -ret16 SafeArrayGetElemsize(ptr) SafeArrayGetElemsize16 19 stub SAFEARRAYGETUBOUND 20 stub SAFEARRAYGETLBOUND -21 stub SAFEARRAYLOCK -22 stub SAFEARRAYUNLOCK +21 pascal SafeArrayLock(ptr) SafeArrayLock16 +22 pascal SafeArrayUnlock(ptr) SafeArrayUnlock16 23 stub SAFEARRAYACCESSDATA 24 stub SAFEARRAYUNACCESSDATA 25 stub SAFEARRAYGETELEMENT