Re: [ROOT] Need advice with TString problem?

From: cstrato (cstrato@aon.at)
Date: Sat Dec 20 2003 - 00:18:42 MET


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