[ROOT] Seg.Violation on return TGraph

From: Sven Schagen (h31@nikhef.nl)
Date: Wed Mar 12 2003 - 17:28:10 MET


Dear ROOTers,

I found a problem with functions returning TGraph objects. Returning a 
TGraph in a compiled piece of code triggers a segmentation violation. An 
simple example is attached below.

My working version of ROOT is 3.04/00. I compiled the code with 
egcs-2.91.66 on a Redhat 6.2 machine. A minimal example of this problem is 
given in the code below. 

Getting an stack trace from the debugger after the crash shows that the
problem is triggered by the TGraph-destructor.

After looking at the TGraph source code, I think the problem lies in the
fact that there is no TGraph copy constructor, to copy the arrays that
contain the coordinates and the other 'pointer' data. 

So my question is: could a (safe) TGraph copy-constructor be implemented,
or is there some (fundamental) reason why there is none implemented yet ?

	Cheers,
		Sven Schagen

---- Example code ----

#include "TGraph.h"
#include <iostream>

TGraph makeGraph(void){
  TGraph rgraph(10);
  rgraph.SetName("test");
  return rgraph;
}

void main(int argc,char** argv){
  cout << "Creating main's TGraph" << endl;
  TGraph tgraph;
  cout << "Getting TGraph from makeGraph." << endl;
  tgraph = makeGraph();
  cout << "Exiting test-code." << endl;

}
 



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:10 MET