diff --git a/io/io/src/TBufferJSON.cxx b/io/io/src/TBufferJSON.cxx index a70ad943bfe70..b1047d5f41484 100644 --- a/io/io/src/TBufferJSON.cxx +++ b/io/io/src/TBufferJSON.cxx @@ -1035,7 +1035,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()); @@ -1076,7 +1082,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());