Re: function never called by TF2::Draw()? (IRIX and Linux)

From: Rene Brun (Rene.Brun@cern.ch)
Date: Wed May 13 1998 - 11:03:24 MEST


Petar,
Thanks for reporting this anomaly and a simple example.
The problem has been forwarded to Masa with your comments.

Rene Brun

Petar Maksimovic wrote:
> 
> Hi Rene,
> 
> my previous example (after your fixes) still causes problems, and
> can be boiled down to:
> 
> ------------8<---------------------------------------------------------
> // file: test.C
> //____________________________________________________________________________
> //  tfun1() is used in TF2 constructor and called by TF2.Draw()
> //
> Double_t tfun1(Double_t* x, Double_t* par)
> {
>   Double_t res;
> 
>   // Uncomment one of the following two lines.  The second one
>   // will cause TF2::Draw() to never execute this function.
>   //Double_t xe[4];                           // ***** THIS WORKS ON SGI *****
>   Double_t xe[4] = {0.0, 0.0, 0.0, 0.0};  // ***** THIS DOESN'T *****
> 
>   xe[0] = x[0] + 0.845;
>   xe[1] = x[0] * x[1] * 0.246;
>   xe[2] = 0.941;
> 
>   res = xe[0]+xe[1]+xe[2];
> 
>   printf("Result = %f\n", res);
>   return res;
> }
> ------------8<---------------------------------------------------------
> 
> I execute it by typing:
> 
> root [0] .L test.C
> root [1] TF2 *f2 = new TF2("t",tfun1,0.,1.,0.,1.,0);
> root [2] f2->Draw();
> 
> The problem is caused by the line
> 
>         Double_t xe[4] = {0.0, 0.0, 0.0, 0.0};
> 
> If "= {0.0, 0.0, 0.0, 0.0}" is removed, it works fine on IRIX 6.2.
> However, on Linux (RedHat 5.0) it bombs with
> 
> Error: Array index out of range xe+1082958485  valid upto xe[3] FILE:/home/petar/root/./test.C LINE:5
> Error: Array index out of range xe+1083297580  valid upto xe[3] FILE:/home/petar/root/./test.C LINE:5
> Error: Array index out of range xe+1082958638  valid upto xe[3] FILE:/home/petar/root/./test.C LINE:5
> 
> Both IRIX and Linux versions of root are 2.00/05.
> 
> On the other hand, if "= {0.0, 0.0, 0.0, 0.0}" is included, the function
> tfun1 is never called by TF2::Draw()!  (This happens on both IRIX 6.2
> and Linux RH 5.0.)
> 
> Let me know what other kind of information I can provide (machine or OS
> details, etc.)
> 
> Thanks a lot!
> 
>         Petar
> 
> P.S. Ultimately, I wouldn't mind CINT refusing to handle some cases, but it
> would, at least, be nice that it informs the user what it's doing...



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:32 MET