@@ -55,7 +55,7 @@ TProtoClass::TProtoClass(TClass* cl):
55
55
TNamed(*cl), fBase(cl->GetListOfBases ()),
56
56
fEnums(cl->GetListOfEnums ()), fSizeof(cl->Size ()), fCheckSum(cl->fCheckSum ),
57
57
fCanSplit(cl->fCanSplit ), fStreamerType(cl->fStreamerType ), fProperty(cl->fProperty ),
58
- fClassProperty(cl->fClassProperty )
58
+ fClassProperty(cl->fClassProperty ), fOwner( false )
59
59
{
60
60
if (cl->Property () & kIsNamespace ){
61
61
// fData=new TListOfDataMembers();
@@ -168,15 +168,20 @@ TProtoClass::~TProtoClass()
168
168
169
169
void TProtoClass::Delete (Option_t* opt /* = ""*/ )
170
170
{
171
- if (fBase ) fBase ->Delete (opt);
172
- delete fBase ; fBase = nullptr ;
171
+ if (fOwner && fBase ) {
172
+ fBase ->Delete (opt);
173
+ delete fBase ; fBase = nullptr ;
174
+ }
173
175
174
- for (auto dm: fData )
175
- delete dm;
176
+ if (fOwner )
177
+ for (auto dm: fData )
178
+ delete dm;
176
179
fData .clear ();
177
180
178
- if (fEnums ) fEnums ->Delete (opt);
179
- delete fEnums ; fEnums = nullptr ;
181
+ if (fOwner && fEnums ) {
182
+ fEnums ->Delete (opt);
183
+ delete fEnums ; fEnums = nullptr ;
184
+ }
180
185
181
186
if (gErrorIgnoreLevel ==-2 ) printf (" Delete the protoClass %s \n " ,GetName ());
182
187
}
@@ -261,6 +266,7 @@ Bool_t TProtoClass::FillTClass(TClass* cl) {
261
266
cl->fName = this ->fName ;
262
267
cl->fTitle = this ->fTitle ;
263
268
cl->fBase = fBase ;
269
+ fBase = nullptr ;
264
270
265
271
// fill list of data members in TClass
266
272
// if (cl->fData) { cl->fData->Delete(); delete cl->fData; }
0 commit comments