Module: wine Branch: refs/heads/master Commit: 37f1d4cb54d568bdb3bdc5a00752e62419628d67 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=37f1d4cb54d568bdb3bdc5a0...
Author: Ulrich Czekalla ulrich@codeweavers.com Date: Thu Feb 2 13:18:43 2006 +0100
oleaut32: Prevent freeing of random memory. Don't assign type to variant until we're sure we are assigning a value.
---
dlls/oleaut32/variant.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c index 4a2dd90..a40f3d0 100644 --- a/dlls/oleaut32/variant.c +++ b/dlls/oleaut32/variant.c @@ -2952,7 +2952,6 @@ HRESULT WINAPI VarAdd(LPVARIANT left, LP
/* Do the math */ hres = S_OK; - V_VT(&tv) = tvt; V_VT(result) = resvt; switch (tvt) { case VT_DECIMAL: @@ -2973,10 +2972,13 @@ HRESULT WINAPI VarAdd(LPVARIANT left, LP V_VT(result) = VT_R8; V_R8(result) = r8res; goto end; - } else + } else { + V_VT(&tv) = tvt; V_I8(&tv) = V_I8(&lv) + V_I8(&rv); + } break; case VT_R8: + V_VT(&tv) = tvt; /* FIXME: overflow detection */ V_R8(&tv) = V_R8(&lv) + V_R8(&rv); break;