A better backtrace (that is, with debugging symbols) is:

#0  0x4039ddb1 in OpenSP::ParsedSystemId::unparse (this=0xbffff52c,
[EMAIL PROTECTED], isNdata=false, [EMAIL PROTECTED]) at
ExtendEntityManager.cxx:2113
#1  0x4010e441 in OpenJade_DSSSL::DssslApp::processSysid
(this=0xbffff628, [EMAIL PROTECTED]) at DssslApp.cxx:126
#2  0x4038cd5a in OpenSP::EntityApp::processArguments
(this=0xbffff628, argc=4, argv=0xbffffac4) at EntityApp.cxx:82
#3  0x40377413 in OpenSP::CmdLineApp::run (this=0xbffff628, argc=4,
argv=0xbffffab4) at CmdLineApp.cxx:356
#4  0x0805707e in main (argc=8, argv=0xbffffab4) at jade.cxx:206

It turns out that StorageObjectSpec::operator= (called earlier in
frame #1) forgets to copy the storageManager field. Here is a patch to
fix that and a problem I couldn't help but notice in the method right
above it (and to think, I claim not to know C++ ;-):

--- lib/ExtendEntityManager.cxx.backup  2006-06-12 16:44:25.000000000 -0400
+++ lib/ExtendEntityManager.cxx 2006-06-12 16:49:27.000000000 -0400
@@ -1238,7 +1238,8 @@
}

StorageObjectSpec::StorageObjectSpec(const StorageObjectSpec& x)
-: codingSystemName(x.codingSystemName),
+: storageManager(x.storageManager),
+  codingSystemName(x.codingSystemName),
  codingSystem(x.codingSystem),
  specId(x.specId),
  baseId(x.baseId),
@@ -1253,6 +1254,7 @@
StorageObjectSpec& StorageObjectSpec::operator=(const StorageObjectSpec& x)
{
  if (this != &x) {
+    storageManager = x.storageManager;
    codingSystemName = x.codingSystemName;
    codingSystem = x.codingSystem;
    specId = x.specId;


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to