Module: wine Branch: master Commit: c23db594aacf69675ebd57936449c412c34f6050 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c23db594aacf69675ebd579364...
Author: Sebastian Lackner sebastian@fds-team.de Date: Tue Mar 3 05:39:46 2015 +0100
ole32: Fix an invalid usage of InterlockedCompareExchange.
---
dlls/ole32/marshal.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/ole32/marshal.c b/dlls/ole32/marshal.c index b308600..c5c2023 100644 --- a/dlls/ole32/marshal.c +++ b/dlls/ole32/marshal.c @@ -805,11 +805,12 @@ static HRESULT proxy_manager_construct(
static inline void proxy_manager_set_context(struct proxy_manager *This, MSHCTX dest_context, void *dest_context_data) { - MSHCTX old_dest_context = This->dest_context; + MSHCTX old_dest_context; MSHCTX new_dest_context;
do { + old_dest_context = This->dest_context; new_dest_context = old_dest_context; /* "stronger" values overwrite "weaker" values. stronger values are * ones that disable more optimisations */ @@ -853,7 +854,7 @@ static inline void proxy_manager_set_context(struct proxy_manager *This, MSHCTX
if (old_dest_context == new_dest_context) break;
- old_dest_context = InterlockedCompareExchange((PLONG)&This->dest_context, new_dest_context, old_dest_context); + new_dest_context = InterlockedCompareExchange((PLONG)&This->dest_context, new_dest_context, old_dest_context); } while (new_dest_context != old_dest_context);
if (dest_context_data)