From f370017e6f2179e5a3bdae0b9ef7f25afa9deaab Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Tue, 2 Sep 2014 11:38:45 +0200 Subject: [PATCH] msvcp90: Fix complex::operator*= implementation. --- dlls/msvcp90/math.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/dlls/msvcp90/math.c b/dlls/msvcp90/math.c index 6c20b2c5708..ec0b4f818c7 100644 --- a/dlls/msvcp90/math.c +++ b/dlls/msvcp90/math.c @@ -1162,10 +1162,11 @@ complex_float* __thiscall complex_float_mult_assign_float(complex_float *this, c DEFINE_THISCALL_WRAPPER(complex_float_mult_assign, 8) complex_float* __thiscall complex_float_mult_assign(complex_float *this, const complex_float *r) { - complex_float tmp = *this; + complex_float tmp; - this->real = tmp.real*r->real - tmp.imag*r->imag; - this->imag = tmp.real*r->imag + tmp.imag*r->real; + tmp.real = this->real*r->real - this->imag*r->imag; + tmp.imag = this->real*r->imag + this->imag*r->real; + *this = tmp; return this; } @@ -1819,10 +1820,11 @@ complex_double* __thiscall complex_double_mult_assign_double(complex_double *thi DEFINE_THISCALL_WRAPPER(complex_double_mult_assign, 8) complex_double* __thiscall complex_double_mult_assign(complex_double *this, const complex_double *r) { - complex_double tmp = *this; + complex_double tmp; - this->real = tmp.real*r->real - tmp.imag*r->imag; - this->imag = tmp.real*r->imag + tmp.imag*r->real; + tmp.real = this->real*r->real - this->imag*r->imag; + tmp.imag = this->real*r->imag + this->imag*r->real; + *this = tmp; return this; }