It sounds like CINT optimization problem. ROOT CINT first checks (pre-compiles) the macro source to create the so-called bytecode then it executes that. You can try to disable the bytecode creation to see how it works. Just use ".O0" ROOT command and then launch your macro. ----- Original Message ----- From: "Chih-hsiang Cheng" <chcheng@SLAC.stanford.edu> To: <roottalk@pcroot.cern.ch> Sent: Thursday, October 18, 2001 7:24 PM Subject: [ROOT] Strange problem with gPad > Hi, > > I run a macro like this: > > void gpad(Int_t p=0) { > for(Int_t index= 0; index < 1; index++) { > if (p==1) { > TCanvas *subcanvas= new TCanvas("canv","canv",800,950); > gPad->SetTopMargin(0.04); > } > } > } > > and it dies like this > > root [1] .x gpad.cc(0) > Error: non class,struct,union object $gPad used with . or -> FILE:gpad.cc LINE:5 > *** Interpreter error recovered *** > > It looks very strange to me since that line (gPad->...) is never executed. > It runs fine with .x gpad.cc(1) ! > > If I modify the macro to be > > void gpad(Int_t p=0) { > if (p==1) { > TCanvas *subcanvas= new TCanvas("canv","canv",800,950); > gPad->SetTopMargin(0.04); > } > } > > it runs fine either with gpad.cc(1) or gpad.cc(0). > > Anybody has an idea what's going on? > I use 3.00/06 . > > Chih-hsiang >
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:03 MET