File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -150,14 +150,17 @@ void CompositeTrade::fromXML(XMLNode* node) {
150150 try {
151151 trade = TradeFactory::instance ().build (tradeType);
152152 trade->id () = id;
153- trade->fromXML (nodes[i]);
154- // the component trade's envelope is the main trade's envelope with possibly overwritten add fields
153+ Envelope componentEnvelope;
154+ if (XMLNode* envNode = XMLUtils::getChildNode (nodes[i], " Envelope" )) {
155+ componentEnvelope.fromXML (envNode);
156+ }
155157 Envelope env = this ->envelope ();
156- for (auto const & [k, v] : trade->envelope ().fullAdditionalFields ())
158+ // the component trade's envelope is the main trade's envelope with possibly overwritten add fields
159+ for (auto const & [k, v] : componentEnvelope.fullAdditionalFields ())
157160 env.setAdditionalField (k,v);
158161 trade->setEnvelope (env);
162+ trade->fromXML (nodes[i]);
159163 trades_.push_back (trade);
160- auto tmpenv = trade->envelope ();
161164 DLOG (" Added Trade " << id << " (" << trade->id () << " )"
162165 << " type:" << tradeType << " to composite trade " << this ->id () << " ." );
163166 } catch (const std::exception& e) {
You can’t perform that action at this time.
0 commit comments