> Hello Philippe, > > > Hi Valery, > > > > TFileSet::TFileSet current has to receveive a first argument > > containing a '/'. > > I.e. your example would works with > > TString name("./ATLAS") > > TFileSet fs(name) > > > > This is due to the lines: > > > > It is not correct since "setname" is second parameter. Brrrr !!! I've to sleep for a while then reply. Sure there is my bug here. Thank you > That is omitted above. By this reason it is "default" > However I agree with your comment. > The code must be protected against of such things properly. > > > if (!setname) {setname = strrchr(name,'/')+1;} > > if (setname) SetName(setname); > > else SetName(name); > > > > The test on the second line is incorrect because the > > first line sets 'setname' to 1 when there are no '/'. > > Anyway this bug should not cause the behaviour I am observing > under Root 3.00.06 at CERN and doesn'r explain the problem > that Christian found. > > Thank you, > Valeri > > > > Philippe. > > > > A possible patch is: > > > > > > cvs diff star/src/TFileSet.cxx > > Index: star/src/TFileSet.cxx > > =================================================================== > > RCS file: /user/cvs/root/star/src/TFileSet.cxx,v > > retrieving revision 1.2 > > diff -r1.2 TFileSet.cxx > > 63c63,66 > > < if (!setname) {setname = strrchr(name,'/')+1;} > > --- > > > if (!setname) { > > > setname = strrchr(name,'/'); > > > if (setname) setname++; > > > } > > > > > > > > -----Original Message----- > > From: owner-roottalk@pcroot.cern.ch > > [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Valeri Fine (Faine) > > Sent: Monday, March 12, 2001 3:07 PM > > To: Christian Holm Christensen > > Cc: roottalk@pcroot.cern.ch > > Subject: Re: [ROOT] Request for iteration on TSystemDirectory > > > > > > > > > > > > > > Uh. When I do > > > > > > > > root> gSystem->Load("libStar.so"); > > > > root> TString home("/home/group/user") > > > > root> TFileSet myHome(home) > > > > > > > > it hangs! That is, nothing happens. ROOT/CINT doen't do anything (I > > > > let it sit there for at least ~30 minutes). Even if I do > > > > > > > > root> TFileSet myhome("/home/group/user", "foo", kFALSE) > > > > > > > > nothing (and I really mean nothing!) happens. What's up? > > > > > > > > > > I still have no 3.00.06 locally. Mean time I tried 3.00.05 > > > and found no problem: > > > > I've tried this example at CERN under ROOT 3.00.06 and found: > > > > Starting program: > > /afs/cern.ch/na49/library.4/ROOT/new/i386_redhat60/root//bin/root.exe -b > > ******************************************* > > * * > > * W E L C O M E to R O O T * > > * * > > * Version 3.00/06 12 March 2001 * > > * * > > * You are welcome to visit our Web site * > > * http://root.cern.ch * > > * * > > ******************************************* > > > > Compiled with thread support. > > > > CINT/ROOT C/C++ Interpreter version 5.14.79, Feb 24 2001 > > Type ? for help. Commands must be C++ statements. > > Enclose multiple statements between { }. > > root [0] gSystem->Load("libStar") > > root [1] TString name("ATLAS") > > root [2] TFileSet fs(name) > > > > Program received signal SIGSEGV, Segmentation fault. > > 0x400fde3b in TString::operator= () > > from > > /afs/cern.ch/na49/library.4/ROOT/new/i386_redhat60/root//lib/libCore.so > > (gdb) where 5 > > #0 0x400fde3b in TString::operator= () > > from > > /afs/cern.ch/na49/library.4/ROOT/new/i386_redhat60/root//lib/libCore.so > > #1 0x400ed130 in TNamed::SetName () > > from > > /afs/cern.ch/na49/library.4/ROOT/new/i386_redhat60/root//lib/libCore.so > > #2 0x40cfd21e in TFileSet::TFileSet () > > from > > /afs/cern.ch/na49/library.4/ROOT/new/i386_redhat60/root//lib/libStar.so > > #3 0x40d344dc in G__TFileSet_TFileSet_1_0__FP8G__valuePCcP8G__parami () > > from > > /afs/cern.ch/na49/library.4/ROOT/new/i386_redhat60/root//lib/libStar.so > > #4 0x404722f3 in G__call_cppfunc () > > from > > /afs/cern.ch/na49/library.4/ROOT/new/i386_redhat60/root//lib/libCint.so > > (More stack frames follow...) > > (gdb) > > > > Any idea ? > > > > > > > > [rcf] ~/public/expert/root > root.exe -b > > > ******************************************* > > > * * > > > * * > > > * Version 3.00/05 5 March 2001 * > > > * * > > > * * > > > ******************************************* > > > root [0] gSystem->Load("libStar") > > > (int)0 > > > root [1] TString a("~/public/expert") > > > root [2] TFileSet fs(a) > > > root [3] fs.ls(8) > > > 0 - expert directory > > > 1 - expert/Jeff directory > > > 2 - expert/Jeff/SavePrim.C file > > > 2 - expert/Jeff/myTestFile.C file > > > 1 - expert/C++Fun directory > > > > > > > > > How deep is your ("/home/group/user") ? > > > Are you sure it is not running around the globe follow the symbolic > > > links for example.It may take a while I think. > > > I have found one has to protect this class against of "black hole deep" > > > directories. > > > > > > Some thing like this: > > > > > > Replace ctor: > > > > > > TFileSet(const TString &dirname,const Char_t *setname,Bool_t expand) > > > > > > with > > > > > > TFileSet(const TString &dirname,const Char_t *setname,Bool_t expand, Int_t > > maxDeep=10) > > > { > > > if (!maxDeep) return; > > > . . . > > > > > > > > > and replace: > > > > > > Add(new TFileSet(nextdir,name,kFALSE)); > > > with > > > Add(new TFileSet(nextdir,name,kFALSE,maxDeep-1)); > > > > > > Thank you, > > > Valeri > > > > > > > > > > > >
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:39 MET