Hi Gordon, on Unix I get the following using your script: void test (char *filename) { printf("file = %s\n", filename); TFile f (filename); if (!f.IsOpen()) printf("f is not open\n"); if (f.IsZombie()) printf("f is a Zombie\n"); TFile *t = new TFile (filename); if (!t->IsOpen()) printf("t is not open\n"); if (t->IsZombie()) printf("t is a Zombie\n"); TFile z ("junk.txt"); if (!z.IsOpen()) printf("z is not open\n"); if (z.IsZombie()) printf("z is a Zombie\n"); } root [5] .x test.C("junk.txt") file = junk.txt Error in <TFile::TFile>: file junk.txt does not exist f is not open f is a Zombie Error in <TFile::TFile>: file junk.txt does not exist t is not open t is a Zombie Error in <TFile::TFile>: file junk.txt does not exist z is not open z is a Zombie NULL root [6] this is ok. Also after executing test() the object and pointers are not accessable anymore (out of scope). And when you do: root [10] gDebug=1 (int)1 root [11] .x test.C("junk.txt") you will see that the TFile dtors are correctly called for the two stack based TFile objects f and z. If you don't get the same output on NT then there is something wrong with the NT version. Let me know. Cheers, Fons. Gordon Watts (Brown University) wrote: > > Hi, > I'm running 1.03/04 on WindowsNT 4.0, Service pack 3. I have the > following macro in a file test.c: > > void test (char *filename) > { > TFile f (filename); > TFile *t = new TFile (filename); > TFile z ("junk.txt"); > } > > In root I run it with ".X test.c("junk.txt");" Junk.txt does not exist in > my current directory, so I expect all three statements to fail. Runnning it > shows that the second two do, indeed, produce an error message. No error > message is forthcoming from the first TFile delc. In fact, the object "f" > doesn't even seem to exist! (i.e. I can't do a IsOpen on it). I searched > the web site and documentation the best I could and the only clue I could > come up with is that TFile's constructor wants an argument of Text_t. I > tried replacing the char * with a Text_t * but it didn't change anything. > BTW, the error message from the second TFile decl indicates that the > "junk.txt" string is getting in just fine. > > I also looked at the root/cint docs to see if there was some restriction on > stack created objects, but I didn't see any references... > > Cheers, > Gordon. -- Org: CERN, European Laboratory for Particle Physics. Mail: 1211 Geneve 23, Switzerland Phone: +41 22 7679248 E-Mail: Fons.Rademakers@cern.ch Fax: +41 22 7677910
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:26:21 MET