Rob Shearman : oleaut32: SafeArrayAllocData should succeed when cbElements is 0.
Module: wine Branch: master Commit: 72a84fbf06a350c3f1fd0a5b45ab26288f447da2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=72a84fbf06a350c3f1fd0a5b45... Author: Rob Shearman <rob(a)codeweavers.com> Date: Wed Dec 27 19:14:38 2006 +0000 oleaut32: SafeArrayAllocData should succeed when cbElements is 0. --- dlls/oleaut32/safearray.c | 19 ++++++++----------- dlls/oleaut32/tests/safearray.c | 5 +---- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/dlls/oleaut32/safearray.c b/dlls/oleaut32/safearray.c index 93656f2..d0ca263 100644 --- a/dlls/oleaut32/safearray.c +++ b/dlls/oleaut32/safearray.c @@ -228,7 +228,7 @@ static SAFEARRAY* SAFEARRAY_Create(VARTY if (ulSize) psa->cbElements = ulSize; - if (FAILED(SafeArrayAllocData(psa))) + if (!psa->cbElements || FAILED(SafeArrayAllocData(psa))) { SafeArrayDestroyDescriptor(psa); psa = NULL; @@ -533,19 +533,16 @@ HRESULT WINAPI SafeArrayAllocData(SAFEAR { ULONG ulSize = SAFEARRAY_GetCellCount(psa); - hRet = E_OUTOFMEMORY; + psa->pvData = SAFEARRAY_Malloc(ulSize * psa->cbElements); - if (psa->cbElements) + if (psa->pvData) { - psa->pvData = SAFEARRAY_Malloc(ulSize * psa->cbElements); - - if (psa->pvData) - { - hRet = S_OK; - TRACE("%u bytes allocated for data at %p (%u objects).\n", - ulSize * psa->cbElements, psa->pvData, ulSize); - } + hRet = S_OK; + TRACE("%u bytes allocated for data at %p (%u objects).\n", + ulSize * psa->cbElements, psa->pvData, ulSize); } + else + hRet = E_OUTOFMEMORY; } return hRet; } diff --git a/dlls/oleaut32/tests/safearray.c b/dlls/oleaut32/tests/safearray.c index 41ee3cb..b80c733 100644 --- a/dlls/oleaut32/tests/safearray.c +++ b/dlls/oleaut32/tests/safearray.c @@ -690,10 +690,7 @@ static void test_SafeArrayAllocDestroyDe sa->rgsabound[0].lLbound = 1; hres = SafeArrayAllocData(sa); - todo_wine - { - ok(hres == S_OK, "SafeArrayAllocData gave hres 0x%x\n", hres); - } + ok(hres == S_OK, "SafeArrayAllocData gave hres 0x%x\n", hres); } static void test_SafeArrayCreateLockDestroy(void)
participants (1)
-
Alexandre Julliard