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:
committed by
Jérôme Duval
parent
edf7f4cd5f
commit
ad33fd78a5
@@ -98,7 +98,7 @@ BAffineTransform::FlattenedSize() const
|
|||||||
status_t
|
status_t
|
||||||
BAffineTransform::Flatten(void* _buffer, ssize_t size) const
|
BAffineTransform::Flatten(void* _buffer, ssize_t size) const
|
||||||
{
|
{
|
||||||
if (_buffer == NULL || size < FlattenedSize())
|
if (_buffer == NULL || size < BAffineTransform::FlattenedSize())
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
double* buffer = reinterpret_cast<double*>(_buffer);
|
double* buffer = reinterpret_cast<double*>(_buffer);
|
||||||
@@ -117,8 +117,10 @@ BAffineTransform::Flatten(void* _buffer, ssize_t size) const
|
|||||||
status_t
|
status_t
|
||||||
BAffineTransform::Unflatten(type_code code, const void* _buffer, ssize_t size)
|
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;
|
return B_BAD_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
const double* buffer = reinterpret_cast<const double*>(_buffer);
|
const double* buffer = reinterpret_cast<const double*>(_buffer);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user