BAffineTransform: de-virtualize some calls in flattening code

The Flatten and Unflatten method should check the size according to the
matching FlattenedSize method, not a possibly overriden version.

May also fix #14128 since we avoid use of the vtable by doing this.
This commit is contained in:
Adrien Destugues
2018-05-08 15:40:01 +00:00
committed by Jérôme Duval
parent edf7f4cd5f
commit ad33fd78a5
+4 -2
View File
@@ -98,7 +98,7 @@ BAffineTransform::FlattenedSize() const
status_t
BAffineTransform::Flatten(void* _buffer, ssize_t size) const
{
if (_buffer == NULL || size < FlattenedSize())
if (_buffer == NULL || size < BAffineTransform::FlattenedSize())
return B_BAD_VALUE;
double* buffer = reinterpret_cast<double*>(_buffer);
@@ -117,8 +117,10 @@ BAffineTransform::Flatten(void* _buffer, ssize_t size) const
status_t
BAffineTransform::Unflatten(type_code code, const void* _buffer, ssize_t size)
{
if (_buffer == NULL || size < FlattenedSize() || code != TypeCode())
if (_buffer == NULL || size < BAffineTransform::FlattenedSize()
|| code != BAffineTransform::TypeCode()) {
return B_BAD_VALUE;
}
const double* buffer = reinterpret_cast<const double*>(_buffer);