Commit 69e7d31c authored by Jon Griffiths's avatar Jon Griffiths Committed by Alexandre Julliard

Fix race in IMAPIProp_Release(), -W fixes.

parent 3d9ba614
......@@ -795,7 +795,8 @@ SCODE WINAPI ScCopyProps(int cValues, LPSPropValue lpProps, LPVOID lpDst, ULONG
{
LPSPropValue lpDest = (LPSPropValue)lpDst;
char *lpDataDest = (char *)(lpDest + cValues);
ULONG ulLen, i, iter;
ULONG ulLen, i;
int iter;
TRACE("(%d,%p,%p,%p)\n", cValues, lpProps, lpDst, lpCount);
......@@ -930,7 +931,8 @@ SCODE WINAPI ScRelocProps(int cValues, LPSPropValue lpProps, LPVOID lpOld,
static const BOOL bBadPtr = TRUE; /* Windows bug - Assumes source is bad */
LPSPropValue lpDest = (LPSPropValue)lpProps;
ULONG ulCount = cValues * sizeof(SPropValue);
ULONG ulLen, i, iter;
ULONG ulLen, i;
int iter;
TRACE("(%d,%p,%p,%p,%p)\n", cValues, lpProps, lpOld, lpNew, lpCount);
......@@ -1520,7 +1522,7 @@ static inline ULONG WINAPI IMAPIProp_fnAddRef(LPMAPIPROP iface)
{
IPropDataImpl *This = (IPropDataImpl*)iface;
TRACE("(%p)->(count=%ld)\n", This, This->lRef);
TRACE("(%p)->(count before=%lu)\n", This, This->lRef);
return InterlockedIncrement(&This->lRef);
}
......@@ -1534,10 +1536,12 @@ static inline ULONG WINAPI IMAPIProp_fnAddRef(LPMAPIPROP iface)
static inline ULONG WINAPI IMAPIProp_fnRelease(LPMAPIPROP iface)
{
IPropDataImpl *This = (IPropDataImpl*)iface;
LONG lRef;
TRACE("(%p)->()\n", This);
TRACE("(%p)->(count before=%lu)\n", This, This->lRef);
if (!InterlockedDecrement(&This->lRef))
lRef = InterlockedDecrement(&This->lRef);
if (!lRef)
{
TRACE("Destroying IPropData (%p)\n",This);
......@@ -1552,9 +1556,8 @@ static inline ULONG WINAPI IMAPIProp_fnRelease(LPMAPIPROP iface)
}
RtlDeleteCriticalSection(&This->cs);
This->lpFree(This);
return 0U;
}
return (ULONG)This->lRef;
return (ULONG)lRef;
}
/**************************************************************************
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment