From 9e7b79a90e3c7cda82410cb9a510aca6954971e7 Mon Sep 17 00:00:00 2001 From: X512 Date: Sat, 21 Mar 2026 01:50:17 +0900 Subject: [PATCH] BPicture: fix BBitmap storage BeOS save `BBitmap` data size `int32` field before bitmap data array. Part of #1133. Change-Id: I5706b87ca19f2e71e242b98eea6d69bc8ec14558 Reviewed-on: https://review.haiku-os.org/c/haiku/+/10555 Tested-by: Commit checker robot Reviewed-by: waddlesplash --- src/kits/interface/PictureDataWriter.cpp | 1 + src/kits/interface/PicturePlayer.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/kits/interface/PictureDataWriter.cpp b/src/kits/interface/PictureDataWriter.cpp index 6e42f44100..c8903d00ca 100644 --- a/src/kits/interface/PictureDataWriter.cpp +++ b/src/kits/interface/PictureDataWriter.cpp @@ -711,6 +711,7 @@ PictureDataWriter::WriteDrawBitmap(const BRect& srcRect, const BRect& dstRect, Write(bytesPerRow); Write(colorSpace); Write(flags); + Write(length); WriteData(data, length); EndOp(); } catch (status_t& status) { diff --git a/src/kits/interface/PicturePlayer.cpp b/src/kits/interface/PicturePlayer.cpp index e3dc147410..edc0599202 100644 --- a/src/kits/interface/PicturePlayer.cpp +++ b/src/kits/interface/PicturePlayer.cpp @@ -1203,19 +1203,19 @@ PicturePlayer::_Play(PicturePlayerCallbacks& callbacks, const uint32* bytesPerRow; const uint32* colorSpace; const uint32* flags; - const void* data; - size_t length; + const int32* length; + const uint8* data; if (!reader.Get(sourceRect) || !reader.Get(destinationRect) || !reader.Get(width) || !reader.Get(height) || !reader.Get(bytesPerRow) || !reader.Get(colorSpace) || !reader.Get(flags) - || !reader.GetRemaining(data, length)) { + || !reader.Get(length) || !reader.Get(data, *length)) { break; } callbacks.DrawPixels(*sourceRect, *destinationRect, *width, *height, *bytesPerRow, (color_space)*colorSpace, - *flags, data, length); + *flags, data, *length); break; }