mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-27 07:32:02 +00:00
afdc09deda
* 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: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
19 lines
300 B
Python
19 lines
300 B
Python
# -*- coding: utf-8 -*-
|
|
|
|
import trampoline_module
|
|
|
|
|
|
def func():
|
|
class Test(trampoline_module.test_override_cache_helper):
|
|
def func(self):
|
|
return 42
|
|
|
|
return Test()
|
|
|
|
|
|
def func2():
|
|
class Test(trampoline_module.test_override_cache_helper):
|
|
pass
|
|
|
|
return Test()
|