• Trigve's avatar
    [master] Wrong caching of overrides (#3465) · afdc09de
    Trigve authored
    * override: Fix wrong caching of the overrides
    
    There was a problem when the python type, which was stored in override
    cache for C++ functions, was destroyed and  the record wasn't removed from the
    override cache. Therefor, dangling pointer was stored there. Then when the
    memory was reused and new type was allocated at the given address and the
    method with the same name (as previously stored in the cache) was actually
    overridden in python, it would wrongly find it in the override cache for C++
    functions and therefor override from python wouldn't be called.
    The fix is to erase the type from the override cache when the type is destroyed.
    
    * test: Pass by const ref instead of by value (clang-tidy)
    
    * test: Rename classes and move to different files
    
    Rename the classes and files so they're no too generic. Also, better place to
    test the stuff is in test_virtual_functions.cpp/.py as we're basically testing
    the virtual functions/trampolines.
    
    * Add TODO for erasure code
    
    * [pre-commit.ci] auto fixes from pre-commit.com hooks
    
    for more information, see https://pre-commit.ci
    
    Co-authored-by: default avatarpre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
    afdc09de
test_interpreter.cpp 13.2 KB