Re: [ROOT] busy flag clear

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Sep 26 2002 - 21:08:09 MEST


Hi Nicolas,

Add the line marked NEW below. Without this line, CINT
will allocate an automatic variable corresponding to h.
When this variable will be deleted in clearing the pad,
h will point to an already deleted object.

Rene Brun

On Thu, 26 Sep 2002, Nicolas de Sereville wrote:

> Hi rooters,
> 
> I have the following problem, which to my mind comes from my bad knowledge of C++. If I run twice the small script below,
> 
> void test()
> {
>    TString path = "/user/deserevi/PH176/Analyse/";
>    TString name = "fl18_cib*_new.root";
>    path += name;
>    TChain *ch = new TChain("coinc");
>    ch->Add( path );
>    cout << "OK 1" << endl;
> 
>    ch->Draw("energie_exc>>h(3000, 5000, 8000)");
     TH1F *h = (TH1F*)gPad->GetPrimitive("h"); //<====NEW
>    cout << "OK 2" << endl;
>    TH1F *h5 = (TH1F*) h->Rebin(5,"h5");
>    cout << "OK 3" << endl;
>    h5->Draw();
>    cout << "OK 4" << endl;
> }
>  
> 
> I obtain the following error just before executing the  TH1F *h5 = (TH1F*) h->Rebin(5, "h5") ' line.
> 
>  *** Break *** segmentation violation
> Root > Function test() busy flag cleared
> 
> any help is welcome
> 
> Nicolas (RH7.2 with ROOT 3.03/09)
> 
> -- :-------------------------------:
> :     Nicolas de SEREVILLE      :
> :         C.S.N.S.M.            :
> :        Batiment 104           :
> :     91405 ORSAY Campus        :
> : Tel : (+ 33) (0)1 69 15 52 29 :
> : Fax : (+ 33) (0)1 69 15 50 08 :
> :-------------------------------:
>  
> 



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:11 MET