Re: [ROOT] TRint::Run return and QuitOpt()

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Tue Jun 05 2001 - 10:55:38 MEST


Hi Mark,

  I've implemented your suggestion.

-- Fons



Mark Messier wrote:
> 
> Hello,
> 
> I was wondering if it would be possible to change the behavior of
> TRint::Run(Bool_t retrn) when retrn=kTRUE and the TRint object was created
> with the "-q" option so that TApplication::QuitOpt() is true. Right now
> the result is that under these conditions a call to:
> 
> TRint::Run(kTRUE)
> 
> will exit the program via exit(0), which means that objects still
> in existence will not be deleted before exiting the program. Please see
> the example program below. I am using ROOT 3.01/03, 25 May 2001.
> 
> Specifically, the change I would like is in the following lines of code in
> TRint.cxx:
> 
> void TRint::Run(Bool_t retrn)
> {
> ...
> //     if (QuitOpt())
> //         Terminate(0);
> // Changed to:
> //
>      if (QuitOpt()) {
>         if (retrn == kTRUE) return
>         Terminate(0);
>      }
> //
> // And likewise a few lines down prior to Terminate(0)
> //
> }
> 
> I'll attach a simple test program which demonstrates this behavior:
> 
> //=== begin test program
> #include <iostream>
> #include "TROOT.h"
> #include "TRint.h"
> class DeleteMe
> {
> public:
>   DeleteMe()  { cerr << "vvvvv Object Created vvvvv\n"; }
>   ~DeleteMe() { cerr << "^^^^^ Object Deleted ^^^^^\n"; }
> };
> int main(int argc, char** argv) {
>   TROOT troot("troot","troot");
>   TRint* app = new TRint("app",&argc,argv,0,0,kTRUE);
>   DeleteMe x;
>   app->Run(kTRUE);
>   return 0;
> }
> //=== end test program
> 
> heplminos2% g++ example.cxx `root-config --cflags --libs`
> heplminos2% ./a.out
> vvvvv Object Created vvvvv
> root [0] .q
> root [1] ^^^^^ Object Deleted ^^^^^
> heplminos2% ./a.out -q
> vvvvv Object Created vvvvv
> root [0]
> 
> Notice that the second case using the -q option has no message indicating
> that the object x was deleted. However, I think these two cases should
> behave identically.
> 
> Thank you,
> Mark
> ========================================================================
> Mark Messier                          e-mail: messier@huhepl.harvard.edu
> Harvard University                  http://www.hepl.harvard.edu/~messier
> 42 Oxford Street                                     Tel. (617) 496-2361
> Cambridge, MA 02138

-- 
Org:    CERN, European Laboratory for Particle Physics.
Mail:   1211 Geneve 23, Switzerland
E-Mail: Fons.Rademakers@cern.ch              Phone: +41 22 7679248
WWW:    http://root.cern.ch/~rdm/            Fax:   +41 22 7677910



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