Rob Shearman : oleaut32:
SafeArrayAllocData should succeed when cbElements is 0.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Dec 28 07:40:19 CST 2006
Module: wine
Branch: master
Commit: 72a84fbf06a350c3f1fd0a5b45ab26288f447da2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=72a84fbf06a350c3f1fd0a5b45ab26288f447da2
Author: Rob Shearman <rob at 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)
More information about the wine-cvs
mailing list