From 826db719cc2025108d66daf342fd7bc8cadeee7a Mon Sep 17 00:00:00 2001 From: Fred Kiefer Date: Thu, 11 Aug 2011 07:27:52 +0000 Subject: [PATCH] * Source/NSAffineTransform.m (-appendTransform:, -prependTransform:): Fix bug in optimisation code by using a local variable. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33716 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 12 +++++++++--- Source/NSAffineTransform.m | 22 +++++++++++++++++----- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0597067ea..48f2fff3e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,10 @@ -2011-08-09 08:43 theraven +2011-08-11 Fred Kiefer + + * Source/NSAffineTransform.m (-appendTransform:) + (-prependTransform:): Fix bug in optimisation code by using a + local variable. + +2011-08-09 08:43 David Chisnall * libs/base/trunk/Source/NSConcreteHashTable.m, libs/base/trunk/Source/NSConcreteMapTable.m: Replace the @@ -6,7 +12,7 @@ with ones that work and don't cause people to dereference pointers that are set to random integer values. -2011-08-07 18:00 theraven +2011-08-07 18:00 David Chisnall * libs/base/trunk/Source/NSObject.m: In -finalize, we're pretending to be the Objective-C runtime, so we need to @@ -16,7 +22,7 @@ objects created with class_createInstance(). -2011-08-07 16:56 theraven +2011-08-07 16:56 David Chisnall * libs/base/trunk/Source/NSObject.m: When calling -.cxx_dealloc, look up the superclass before calling. This method diff --git a/Source/NSAffineTransform.m b/Source/NSAffineTransform.m index 7127c26d7..4119ea6c8 100644 --- a/Source/NSAffineTransform.m +++ b/Source/NSAffineTransform.m @@ -160,12 +160,15 @@ static NSAffineTransformStruct identityTransform = { if (_isIdentity) { + CGFloat newTX; + A = aTransform->A; B = aTransform->B; C = aTransform->C; D = aTransform->D; - TX = TX * aTransform->A + TY * aTransform->C + aTransform->TX; + newTX = TX * aTransform->A + TY * aTransform->C + aTransform->TX; TY = TX * aTransform->B + TY * aTransform->D + aTransform->TY; + TX = newTX; _isIdentity = NO; // because aTransform is not an identity transform. _isFlipY = aTransform->_isFlipY; check(); @@ -174,12 +177,15 @@ static NSAffineTransformStruct identityTransform = { if (_isFlipY) { + CGFloat newTX; + A = aTransform->A; B = aTransform->B; C = -aTransform->C; D = -aTransform->D; - TX = TX * aTransform->A + TY * aTransform->C + aTransform->TX; + newTX = TX * aTransform->A + TY * aTransform->C + aTransform->TX; TY = TX * aTransform->B + TY * aTransform->D + aTransform->TY; + TX = newTX; _isIdentity = NO; _isFlipY = NO; check(); @@ -280,16 +286,22 @@ static NSAffineTransformStruct identityTransform = { if (aTransform->_isIdentity) { - TX = aTransform->TX * A + aTransform->TY * C + TX; + CGFloat newTX; + + newTX = aTransform->TX * A + aTransform->TY * C + TX; TY = aTransform->TX * B + aTransform->TY * D + TY; + TX = newTX; check(); return; } if (aTransform->_isFlipY) { - TX = aTransform->TX * A + aTransform->TY * C + TX; - TY = aTransform->TX * B + aTransform->TY * D + TY; + CGFloat newTX; + + newTX = aTransform->TX * A + aTransform->TY * C + TX; + TY = aTransform->TX * B + aTransform->TY * D + TY; + TX = newTX; C = -C; D = -D; if (_isIdentity)