Skip to content

Commit

Permalink
io json: move pointer derefence closer to use.
Browse files Browse the repository at this point in the history
This avoid the risk of applying the dereference twice.
  • Loading branch information
pcanal committed Feb 6, 2025
1 parent b439b74 commit 7e77f51
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions io/io/src/TBufferJSON.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -671,8 +671,6 @@ TString TBufferJSON::ConvertToJSON(const void *obj, const TClass *cl, Int_t comp
}

void *ptr = (char *)actualStart + rdata->GetThisOffset();
if (member->IsaPointer())
ptr = *((char **)ptr);

return TBufferJSON::ConvertToJSON(ptr, member, compact, arraylen);
}
Expand Down Expand Up @@ -723,7 +721,7 @@ TString TBufferJSON::StoreObject(const void *obj, const TClass *cl)

TString TBufferJSON::ConvertToJSON(const void *ptr, TDataMember *member, Int_t compact, Int_t arraylen)
{
if (!ptr || !member)
if (!member || !ptr || (member->IsaPointer() && (*(void**)ptr) == nullptr))
return TString("null");

Bool_t stlstring = !strcmp(member->GetTrueTypeName(), "string");
Expand All @@ -733,8 +731,11 @@ TString TBufferJSON::ConvertToJSON(const void *ptr, TDataMember *member, Int_t c
TClass *mcl = member->IsBasic() ? nullptr : gROOT->GetClass(member->GetTypeName());

if (mcl && (mcl != TString::Class()) && !stlstring && !isstl && (mcl->GetBaseClassOffset(TArray::Class()) != 0) &&
(arraylen <= 0) && (member->GetArrayDim() == 0))
(arraylen <= 0) && (member->GetArrayDim() == 0)) {
if (member->IsaPointer())
ptr = *((char **)ptr);
return TBufferJSON::ConvertToJSON(ptr, mcl, compact);
}

TBufferJSON buf;

Expand Down Expand Up @@ -1019,6 +1020,9 @@ TString TBufferJSON::JsonWriteMember(const void *ptr, TDataMember *member, TClas
else if (!member->IsBasic() || (tid == kOther_t) || (tid == kVoid_t))
tid = kNoType_t;

if (ptr && member->IsaPointer())
ptr = *((void **)ptr);

if (!ptr)
return (tid == kCharStar) ? "\"\"" : "null";

Expand Down

0 comments on commit 7e77f51

Please sign in to comment.