Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1765)

Unified Diff: Source/platform/transforms/RotateTransformOperation.cpp

Issue 1027513003: Avoid uninitialized memory when decomposing a matrix fails. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/platform/transforms/RotateTransformOperation.cpp
diff --git a/Source/platform/transforms/RotateTransformOperation.cpp b/Source/platform/transforms/RotateTransformOperation.cpp
index 8a49884e2d5f333b16a52857229654b5f88df90e..c3e2b9dbaa642ebc1795be3db667ecbb0f1cc90f 100644
--- a/Source/platform/transforms/RotateTransformOperation.cpp
+++ b/Source/platform/transforms/RotateTransformOperation.cpp
@@ -127,7 +127,11 @@ PassRefPtr<TransformOperation> RotateTransformOperation::blend(const TransformOp
// Extract the result as a quaternion
TransformationMatrix::DecomposedType decomp;
- toT.decompose(decomp);
+ if (!toT.decompose(decomp)) {
+ // If we can't decompose, bail out of interpolation.
+ const RotateTransformOperation* usedOperation = progress > 0.5 ? this : fromOp;
+ return RotateTransformOperation::create(usedOperation->x(), usedOperation->y(), usedOperation->z(), usedOperation->angle(), Rotate3D);
+ }
// Convert that to Axis/Angle form
double x = -decomp.quaternionX;
« no previous file with comments | « Source/platform/transforms/PerspectiveTransformOperation.cpp ('k') | Source/platform/transforms/TransformationMatrix.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698