From d080b55c5bf18e1ba82508adc012395a68efe7e8 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 27 Aug 2017 10:41:32 +0200 Subject: [PATCH] Bugfix: tiling processor's _rec method wasn't delivering virtual methods. --- src/db/db/dbTilingProcessor.cc | 9 ++++++--- src/gsi/gsi/gsiExpression.cc | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/db/db/dbTilingProcessor.cc b/src/db/db/dbTilingProcessor.cc index ed51204cd..15cd6be5b 100644 --- a/src/db/db/dbTilingProcessor.cc +++ b/src/db/db/dbTilingProcessor.cc @@ -722,9 +722,12 @@ TilingProcessor::receiver (const std::vector &args) throw tl::Exception (tl::to_string (QObject::tr ("Invalid handle in _rec function call"))); } - // Create another variable with a reference to the receiver object - const tl::VariantUserClassBase *var_cls = gsi::cls_decl ()->var_cls (true /*const*/); - return tl::Variant (m_outputs[index].receiver.get (), var_cls, false); + gsi::Proxy *proxy = new gsi::Proxy (gsi::cls_decl ()); + proxy->set (m_outputs[index].receiver.get (), false, false, false); + + // gsi::Object based objects are managed through a Proxy and + // shared pointers within tl::Variant. That means: copy by reference. + return tl::Variant (proxy, gsi::cls_decl ()->var_cls (true /*const*/), true); } void diff --git a/src/gsi/gsi/gsiExpression.cc b/src/gsi/gsi/gsiExpression.cc index 2aa201b90..019c22598 100644 --- a/src/gsi/gsi/gsiExpression.cc +++ b/src/gsi/gsi/gsiExpression.cc @@ -1259,7 +1259,7 @@ VariantUserClassImpl::execute (const tl::ExpressionParserContext &context, tl::V proxy->set (obj, true, false, true); // gsi::Object based objects are managed through a Proxy and - // shared pointers within tl::Variant. That mean: copy by reference. + // shared pointers within tl::Variant. That means: copy by reference. out.set_user_ref (proxy, mp_object_cls, true); } else {