Selaa lähdekoodia

LibWeb: Don't divide by 0 in DOMMatrix::invert_self()

We'd only check is_invertible() after calling inverse(), which would
do a divide-by-0 for non-invertible matrices.

Less ambitious version of #18593.
Nico Weber 2 vuotta sitten
vanhempi
commit
2abe62adfa
1 muutettua tiedostoa jossa 5 lisäystä ja 2 poistoa
  1. 5 2
      Userland/Libraries/LibWeb/Geometry/DOMMatrix.cpp

+ 5 - 2
Userland/Libraries/LibWeb/Geometry/DOMMatrix.cpp

@@ -252,11 +252,14 @@ void DOMMatrix::set_f(double value)
 // https://drafts.fxtf.org/geometry/#dom-dommatrix-invertself
 JS::NonnullGCPtr<DOMMatrix> DOMMatrix::invert_self()
 {
+    bool is_invertible = m_matrix.is_invertible();
+
     // 1. Invert the current matrix.
-    m_matrix = m_matrix.inverse();
+    if (is_invertible)
+        m_matrix = m_matrix.inverse();
 
     // 2. If the current matrix is not invertible set all attributes to NaN and set is 2D to false.
-    if (!m_matrix.is_invertible()) {
+    if (!is_invertible) {
         for (u8 i = 0; i < 4; i++) {
             for (u8 j = 0; j < 4; j++)
                 m_matrix.elements()[i][j] = NAN;