From dde6d280aa5316aec267dcab6d405dd7b805c150 Mon Sep 17 00:00:00 2001 From: Philippe Canal Date: Thu, 6 Feb 2025 14:24:52 -0600 Subject: [PATCH] io json: properly scan content of pointer to array. --- io/io/src/TBufferJSON.cxx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/io/io/src/TBufferJSON.cxx b/io/io/src/TBufferJSON.cxx index de7ac98443b03..899dc0237263e 100644 --- a/io/io/src/TBufferJSON.cxx +++ b/io/io/src/TBufferJSON.cxx @@ -1038,7 +1038,13 @@ TString TBufferJSON::JsonWriteMember(const void *ptr, TDataMember *member, TClas if (indx.IsArray() && (tid == kChar_t)) shift = indx.ReduceDimension(); + auto unitSize = member->GetUnitSize(); char *ppp = (char *)ptr; + if (member->IsaPointer()) { + // UnitSize was the sizeof(void*) + assert(member->GetDataType()); + unitSize = member->GetDataType()->Size(); + } if (indx.IsArray()) fOutBuffer.Append(indx.GetBegin()); @@ -1079,7 +1085,7 @@ TString TBufferJSON::JsonWriteMember(const void *ptr, TDataMember *member, TClas if (indx.IsArray()) fOutBuffer.Append(indx.NextSeparator()); - ppp += shift * member->GetUnitSize(); + ppp += shift * unitSize; } while (!indx.IsDone());