From c6131d4c607949a1a148e2e8e4b5d4076e6e3f35 Mon Sep 17 00:00:00 2001 From: Philippe Canal <pcanal@fnal.gov> Date: Wed, 7 Dec 2016 09:40:47 -0600 Subject: [PATCH] Fix TObject cast error in TKey::ReadObjectAny method [ROOT-8495] For all TObject-based classes pointer was inadvertently casted to TObject and return in this form. But if TObject is not a first parent of the resquested class, the return value was wrong. --- io/io/src/TKey.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/io/io/src/TKey.cxx b/io/io/src/TKey.cxx index b417eb59b8b..3039ae1b97e 100644 --- a/io/io/src/TKey.cxx +++ b/io/io/src/TKey.cxx @@ -1101,12 +1101,12 @@ void *TKey::ReadObjectAny(const TClass* expectedClass) } if (cl->IsTObject()) { - baseOffset = cl->GetBaseClassOffset(TObject::Class()); - if (baseOffset==-1) { + auto tobjBaseOffset = cl->GetBaseClassOffset(TObject::Class()); + if (tobjBaseOffset == -1) { Fatal("ReadObj","Incorrect detection of the inheritance from TObject for class %s.\n", fClassName.Data()); } - TObject *tobj = (TObject*)( ((char*)pobj) +baseOffset); + TObject *tobj = (TObject*)( ((char*)pobj) + tobjBaseOffset); // See similar adjustments in ReadObj if (gROOT->GetForceStyle()) tobj->UseCurrentStyle(); -- GitLab