From 84aab22f669e90609c417c39cf4d81809fa1c5b6 Mon Sep 17 00:00:00 2001 From: Karl Wette Date: Fri, 11 May 2018 15:31:26 +1000 Subject: [PATCH] Lib/Octave: in Octave >= 4.4, assign reference to base class in subclass - See Examples/octave/callback/runme.m: a.run() calls Octave callback, but due to changes in behaviour to subsref() a.Callback.run() can no longer be used to call C callback unless a.Callback actually exists; subsrefs() just gets the "Callback" call whereas prior to Octave 4.4 it would get both the "Callback" and "run" calls. So now a.Callback is set to the original base class (with own=0) so that it can be accessed --- Lib/octave/octrun.swg | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Lib/octave/octrun.swg b/Lib/octave/octrun.swg index f5d8b3898..6e297d388 100644 --- a/Lib/octave/octrun.swg +++ b/Lib/octave/octrun.swg @@ -484,8 +484,12 @@ SWIGRUNTIME void swig_acquire_ownership_obj(void *vptr, int own); } types.insert(types.end(), rhs.types.begin(), rhs.types.end()); members.insert(rhs.members.begin(), rhs.members.end()); +#if SWIG_OCTAVE_PREREQ(4,4,0) + assign(rhs.swig_type_name(), rhs.as_value()); +#else rhs.types.clear(); rhs.members.clear(); +#endif } typedef member_map::const_iterator swig_member_const_iterator;