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.
This commit is contained in:
Nico Weber 2023-05-01 09:47:28 -04:00 committed by Andreas Kling
parent 3811be2f7c
commit 2abe62adfa
Notes: sideshowbarker 2024-07-17 06:09:44 +09:00

View file

@ -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.
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;