From 5be8e81fc8577acd1d124c03cc7df42588e5866f Mon Sep 17 00:00:00 2001 From: X512 Date: Wed, 7 Jan 2026 00:03:36 +0900 Subject: [PATCH] app_server/AS_GET_BOUNDINGBOXES_STRINGS: store each array independently Do not use array interleaving. It is more consistent and removes special case for protocol definition driven inspection tools. Change-Id: I5034e344c2c8611d21f8809dd67acc4864dd1d3e Reviewed-on: https://review.haiku-os.org/c/haiku/+/10214 Reviewed-by: waddlesplash Tested-by: Commit checker robot --- src/kits/interface/Font.cpp | 12 +++++------- src/servers/app/ServerApp.cpp | 8 ++++---- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/kits/interface/Font.cpp b/src/kits/interface/Font.cpp index 3e9494a4d6..3eb4aab57c 100644 --- a/src/kits/interface/Font.cpp +++ b/src/kits/interface/Font.cpp @@ -1290,18 +1290,16 @@ BFont::GetBoundingBoxesForStrings(const char* stringArray[], int32 numStrings, link.Attach(mode); link.Attach(numStrings); + for (int32 i = 0; i < numStrings; i++) + link.AttachString(stringArray[i]); + if (deltas) { - for (int32 i = 0; i < numStrings; i++) { - link.AttachString(stringArray[i]); + for (int32 i = 0; i < numStrings; i++) link.Attach(deltas[i]); - } } else { escapement_delta emptyDelta = {0, 0}; - - for (int32 i = 0; i < numStrings; i++) { - link.AttachString(stringArray[i]); + for (int32 i = 0; i < numStrings; i++) link.Attach(emptyDelta); - } } if (link.FlushWithReply(code) != B_OK || code != B_OK) diff --git a/src/servers/app/ServerApp.cpp b/src/servers/app/ServerApp.cpp index 69cd0a0713..eaef758932 100644 --- a/src/servers/app/ServerApp.cpp +++ b/src/servers/app/ServerApp.cpp @@ -2867,9 +2867,8 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver& link) // 8) uint32 - flags // 9) font_metric_mode - mode // 10) int32 numStrings - // 11) escapement_delta - additional delta (numStrings times) - // 12) int32 string length to measure (numStrings times) - // 13) string - string (numStrings times) + // 11) string - string (numStrings times) + // 12) escapement_delta - additional delta (numStrings times) // Returns: // 1) BRect - rects with numStrings entries @@ -2908,8 +2907,9 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver& link) // This version of ReadString allocates the strings, we free // them below link.ReadString(&stringArray[i], &lengthArray[i]); - link.Read(&deltaArray[i]); } + for (int32 i = 0; i < numStrings; i++) + link.Read(&deltaArray[i]); ServerFont font; status_t status = font.SetFamilyAndStyle(familyID, styleID,