RE: [ROOT] map<string,double> seg fault

From: Philippe Canal (pcanal@fnal.gov)
Date: Tue Mar 09 2004 - 19:30:25 MET


Hi John,

Thanks for reporting this problem.

Due to an oversight, the dictionary of map<string,double> is not
generated with the cintdlls in ROOT 4.00/02.  This will be fixed
shortly in the CVS repository.

The fact that it works fine for you in a 'ROOT session' indicates
that you have not generated the cintdlls (i.e. do a 'gmake cintdlls'
after building ROOT).

The consequence is that the 'map<string,double>' in the interpreter
is __different__ from the 'map<string,double>' in the compiled code.
Which means that you can NOT pass them between compiled code and 
interpreted code.

To work around the problem you should generate the dictionary for
map<string,double>

In addition there is a different problem which prevents cint from 
properly executing (we are working on a fix).
    m.Param()["hello"]
Please use
    map<string,double> &mm(m.Param());
    mm["hello"]=3.14149;
instead.

Cheers,
Philippe.

-----Original Message-----
From: owner-roottalk@pcroot.cern.ch
[mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of John Pretz
Sent: Tuesday, March 09, 2004 7:34 AM
To: roottalk@pcroot.cern.ch
Subject: [ROOT] map<string,double> seg fault


Greetings to the ROOT world,

I've been having trouble with map<string,double>.

It works fine from a root session
{
#include <map>
#include <string>
  map<string,double> m;
  m["string"] = 5.6;
  cout<<m["string"]<<endl;
}

but when I've got a map<string,double> as data in some class, and try to
get it out, I get a segmentation fault.

Please see the attached example.  It shows off what I can and can't do.
'make' compiles the code and runs the example.

Note that I haven't explicitly instantiated the map<string,double>
template in the LinkDef because my first script works and so it looks like
that template comes pre-instantiated (which is reasonable.)

Thanks for looking,

John
--
---------------Visit my webpage!---------------------
---------http://umdgrb.umd.edu/pretz-----------------



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:06 MET