I managed to “fix that” without touching the (actually) offending C++ code (prSymbol_envirPut
which does a “non-virtual call” into IDict), although my fix does look a bit inefficient:
+ Symbol {
envirPut { arg aValue;
//("envirPut hook for a" + currentEnvironment.class).postln;
if(Event.superclasses.add(Event).includes(currentEnvironment.class).not,
{/*"overrrided native".postln;*/ ^currentEnvironment.put(this, aValue)},
{^this.nativePut(aValue)}
);
}
nativePut { arg aValue;
_Symbol_envirPut
currentEnvironment.put(this, aValue);
^aValue
}
}