Hi Christian, It looks like you are just hitting a simple C++ scoping problem. In case you store a pointer to the second argument of your InitSelector function, this pointer will point to a dead area when the original TString object will go out of scope. Rene Brun On Sat, 20 Dec 2003, cstrato wrote: > Dear Rooters > > Meanwhile, I could narrow down the error to the following > method in my GUI class XNormationFrame: > Int_t XNormationFrame::InitSelector() > { > Int_t err = 0; > TString opt = "separate"; > err = XMainFrame::sNormManager->InitSelector("rank", opt.Data()); > return err; > } > In this case I get the error described earlier. > > However, the following simple change DOES work: > Int_t XNormationFrame::InitSelector() > { > Int_t err = 0; > err = XMainFrame::sNormManager->InitSelector("rank", "separate"); > return err; > } > > Can anybody explain me what could cause this error??? > > Thank you in advance > Best regards > Christian > > > cstrato wrote: > > > Dear Rooters > > > > I have the following strange problem and do not know how > > to find the error: > > > > I have a basic library and a couple of derived libraries, > > which define different XManager classes and subclasses. > > Using one of the derived libraries I am able to execute > > the following macro from within ROOT: > > > > void Normalize( > > { > > XNormationManager *manager = new XNormationManager("Manager"); > > > > manager->Initialize("PixType"); > > manager->InitSelector("rank", "separate", 4,0,0.3,400,0); > > // here I initialize XSelector::fOption = "separate" > > > > manager->New("test","~/ROOT/rootcode","PixType"); > > // here I create file = new TFile(name,"CREATE", title) > > > > manager->OpenData("~/ROOT/rootdata/test.root"); > > > > manager->Select("TestSet","tree1"); > > // at this point XSelector::fOption is already set to: > > // fOption = "CREATE" instead of fOption = "separate" > > // when this code is part of a standalone GUI app! > > > > manager->Select("TestSet","tree2"); > > manager->Select("TestSet","tree3"); > > > > manager->Normalize("TestSet"); > > > > delete manager; > > } > > > > Please note that this macro has always worked witout any > > problems and still runs perfectly fine. > > > > However, now I have developed a GUI application, where > > the user can set all parameters graphically, and where > > this code is implemented within different methods of > > my class XNormationFrame. In the XMainFrame I have defined: > > static XNormationManager *sNormManager; > > and the subframe calls e.g. > > XMainFrame::sNormManager->Initialize("PixType") > > etc. > > > > When I press the button to execute the same commands > > as in my macro, then XSelector::fOption, which is > > set to "separate" in InitSelector(), is strangley > > set to "CREATE" after execution of manager->New()!! > > > > I know that you cannot give me a concrete answer, but > > maybe you could tell me: > > Does this look like a buffer overflow? > > What are the usual errors which result in such an error? > > What can be done to track down this error? > > > > Thank you in advance > > Best regards > > Christian > > _._._._._._._._._._._._._._._._ > > C.h.i.s.t.i.a.n S.t.r.a.t.o.w.a > > V.i.e.n.n.a A.u.s.t.r.i.a > > _._._._._._._._._._._._._._._._ > > > > > > > > >
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:17 MET