[ROOT] TClass::IgnoreTObjectStreamer problem

From: Dave Casper (dcasper@uci.edu)
Date: Fri Jan 26 2001 - 10:20:59 MET


	Hi,

TClass::IgnoreTObjectStreamer() has a somewhat annoying feature.  You can
only call it once for a given class, even if you do not actually change the
setting on the second call.  I.e., if you do

TMyClass::Class()->IgnoreTObjectStreamer(kTRUE);
TMyClass::Class()->IgnoreTObjectStreamer(kTRUE);

(of course in real life you would not call it on consecutive lines, but in
different routines which are called in an a priori unknown order).

the second call resets the flag in question (as if you had called it with
kFALSE instead of kTRUE), checks whether a TStreamerInfo exists for the
class in question, and then returns an error without taking further action
if it does exist.  This then leads to a subsequent access violation.

What this method should do, I think, is check whether the "ignore" bit
already corresponds to the requested setting (regardless of whether the
requested setting is kTRUE or kFALSE).  If so, just return.  If not, then
check whether it is too late to change the setting and raise the error if it
is.


Dave
dcasper@uci.edu



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:34 MET