Re: [ROOT] crash while openning a list of files

From: Rene Brun (Rene.Brun@cern.ch)
Date: Mon Mar 05 2001 - 10:33:51 MET


Hi Rustam,

Your code works correctly with version 3.00.
This version includes a fix in the += operator of TString

Rene Brun

Rustam Niyazov wrote:
> 
> Dear Rooters,
> 
> Could anyone help me?
> I am trying to open a list of files, but my code
> is crashing if number of files greater then 4.
> 
> It gives an error:
> root [0] .x theta_replace.C
> Number of files to read 32
> PPiFit_0200_0250_t.C
> PPiFit_0250_0300_t.C
> PPiFit_0300_0350_t.C
> PPiFit_0350_0400_t.C
> PPiFit_0400_0450_t.C //Crashes on that line
> 
>  *** Break *** segmentation violation
> Root > Error: ~TString() header declared but not defined
> FILE:theta_replace.C LINE:48
> 
> Below is a code I am using:
> 
> {
> gROOT->Reset();
> TString FileList ="theta_replace.txt";
> 
> ifstream fin(FileList); //Reading the file names
> 
> if(!fin) {
>   cout << "cannot open theta_replace.txt \n";
>   return 1;
> }
> 
> TString FileNamet[40];
> TString FileName_tmp[40];
> Bool_t skipWhite;
> Int_t nfiles=0;
> char tmp_filename[40][40];
> do{
>   fin>>tmp_filename[nfiles];
>   FileName_tmp[nfiles]=tmp_filename[nfiles];
>   nfiles++;
> }while(fin);
> fin.close();
> 
> cout<< "Number of files to read " <<nfiles<<endl;
> for(Int_t i=0;i<nfiles;i++){//loop thru files
>   FileNamet[i]=FileName_tmp[i];
>   FileNamet[i]+="_t.C";
> }
> 
> ifstream* finput[40];
> for(Int_t i=0;i<40;i++){finput[i]=NULL; }
> 
> for(Int_t i=0;i<5;i++){//loop thru files
>   cout<<FileNamet[i]<<endl;
>   finput[i] = new ifstream(FileNamet[i]);
> 
>   if(!finput[i]) {
>     cout << "cannot open "<<FileNamet[i]<<"\n";
>     return 1;
>   }
>   finput[i].close();
>   delete finput[i];
> }
> 
> }
> 
> //____theta_replace.txt_____//
> 
> PPiFit_0250_0300
> PPiFit_0300_0350
> PPiFit_0350_0400
> PPiFit_0400_0450
> PPiFit_0450_0500
> PPiFit_0500_0550
> 
> Thanks,
> 
> Rustam



This archive was generated by hypermail 2b29 : Fri Jun 08 2001 - 11:51:20 MEST