* 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
This commit is contained in:
Fred Kiefer 2011-08-11 07:27:52 +00:00
parent 4ea812deb4
commit 826db719cc
2 changed files with 26 additions and 8 deletions

View file

@ -1,4 +1,10 @@
2011-08-09 08:43 theraven 2011-08-11 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSAffineTransform.m (-appendTransform:)
(-prependTransform:): Fix bug in optimisation code by using a
local variable.
2011-08-09 08:43 David Chisnall <theraven@gna.org>
* libs/base/trunk/Source/NSConcreteHashTable.m, * libs/base/trunk/Source/NSConcreteHashTable.m,
libs/base/trunk/Source/NSConcreteMapTable.m: Replace the libs/base/trunk/Source/NSConcreteMapTable.m: Replace the
@ -6,7 +12,7 @@
with ones that work and don't cause people to dereference with ones that work and don't cause people to dereference
pointers that are set to random integer values. pointers that are set to random integer values.
2011-08-07 18:00 theraven 2011-08-07 18:00 David Chisnall <theraven@gna.org>
* libs/base/trunk/Source/NSObject.m: In -finalize, we're pretending * libs/base/trunk/Source/NSObject.m: In -finalize, we're pretending
to be the Objective-C runtime, so we need to to be the Objective-C runtime, so we need to
@ -16,7 +22,7 @@
objects created with objects created with
class_createInstance(). class_createInstance().
2011-08-07 16:56 theraven 2011-08-07 16:56 David Chisnall <theraven@gna.org>
* libs/base/trunk/Source/NSObject.m: When calling -.cxx_dealloc, * libs/base/trunk/Source/NSObject.m: When calling -.cxx_dealloc,
look up the superclass before calling. This method look up the superclass before calling. This method

View file

@ -160,12 +160,15 @@ static NSAffineTransformStruct identityTransform = {
if (_isIdentity) if (_isIdentity)
{ {
CGFloat newTX;
A = aTransform->A; A = aTransform->A;
B = aTransform->B; B = aTransform->B;
C = aTransform->C; C = aTransform->C;
D = aTransform->D; 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; TY = TX * aTransform->B + TY * aTransform->D + aTransform->TY;
TX = newTX;
_isIdentity = NO; // because aTransform is not an identity transform. _isIdentity = NO; // because aTransform is not an identity transform.
_isFlipY = aTransform->_isFlipY; _isFlipY = aTransform->_isFlipY;
check(); check();
@ -174,12 +177,15 @@ static NSAffineTransformStruct identityTransform = {
if (_isFlipY) if (_isFlipY)
{ {
CGFloat newTX;
A = aTransform->A; A = aTransform->A;
B = aTransform->B; B = aTransform->B;
C = -aTransform->C; C = -aTransform->C;
D = -aTransform->D; 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; TY = TX * aTransform->B + TY * aTransform->D + aTransform->TY;
TX = newTX;
_isIdentity = NO; _isIdentity = NO;
_isFlipY = NO; _isFlipY = NO;
check(); check();
@ -280,16 +286,22 @@ static NSAffineTransformStruct identityTransform = {
if (aTransform->_isIdentity) 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; TY = aTransform->TX * B + aTransform->TY * D + TY;
TX = newTX;
check(); check();
return; return;
} }
if (aTransform->_isFlipY) if (aTransform->_isFlipY)
{ {
TX = aTransform->TX * A + aTransform->TY * C + TX; CGFloat newTX;
TY = aTransform->TX * B + aTransform->TY * D + TY;
newTX = aTransform->TX * A + aTransform->TY * C + TX;
TY = aTransform->TX * B + aTransform->TY * D + TY;
TX = newTX;
C = -C; C = -C;
D = -D; D = -D;
if (_isIdentity) if (_isIdentity)