Sebastian Lackner : ole32: Fix an invalid usage of InterlockedCompareExchange.
Module: wine Branch: master Commit: c23db594aacf69675ebd57936449c412c34f6050 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c23db594aacf69675ebd579364... Author: Sebastian Lackner <sebastian(a)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)
participants (1)
-
Alexandre Julliard