In the attached testcase, hover over the blue box. It asserts here:
Length(int v, LengthType t, bool q = false)
: m_value((v * 16) | (q << 3) | t) // FIXME: Doesn't work if the passed-in value is very large!
ASSERT(t != Percent);
Created attachment 22351 [details]
Testcase; asserts in debug build on hover.
The issue is that
Length(0, m_x.type()).blend(m_x, progress)
creates a Length() using a value of 0 and the type from m_x, which can be percentage. This asserts in the Length ctor.
Instead, we use
which just constructs a Length with the right type, and blends that.
Created attachment 22352 [details]
Comment on attachment 22352 [details]
Fixed in r35238.