diff options
Diffstat (limited to 'cpp/src/FreezeScript/DumpDescriptors.cpp')
-rw-r--r-- | cpp/src/FreezeScript/DumpDescriptors.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/cpp/src/FreezeScript/DumpDescriptors.cpp b/cpp/src/FreezeScript/DumpDescriptors.cpp index e9335efd8e9..042baabfed3 100644 --- a/cpp/src/FreezeScript/DumpDescriptors.cpp +++ b/cpp/src/FreezeScript/DumpDescriptors.cpp @@ -1238,10 +1238,12 @@ FreezeScript::RecordDescriptor::RecordDescriptor(const DescriptorPtr& parent, in const DataFactoryPtr& factory, const ErrorReporterPtr& errorReporter, const IceXML::Attributes& attributes, - const Slice::UnitPtr& unit) : + const Slice::UnitPtr& unit, + const FreezeScript::ObjectFactoryPtr& objectFactory) : Descriptor(parent, line, factory, errorReporter), ExecutableContainerDescriptor(parent, line, factory, errorReporter, attributes, "record"), - _unit(unit) + _unit(unit), + _objectFactory(objectFactory) { } @@ -1251,7 +1253,7 @@ FreezeScript::RecordDescriptor::execute(const SymbolTablePtr& sym, ExecuteInfo* // // Temporarily add an object factory. // - info->communicator->addObjectFactory(new FreezeScript::ObjectFactory(_factory, _unit), ""); + _objectFactory->activate(_factory, _unit); // // Iterate over the database. @@ -1320,6 +1322,7 @@ FreezeScript::RecordDescriptor::execute(const SymbolTablePtr& sym, ExecuteInfo* { dbc->close(); } + _objectFactory->deactivate(); throw; } @@ -1327,6 +1330,7 @@ FreezeScript::RecordDescriptor::execute(const SymbolTablePtr& sym, ExecuteInfo* { dbc->close(); } + _objectFactory->deactivate(); } // |