Skip to content

Commit 0f03f22

Browse files
committed
Test that passes with the fix, fails without.
Testing with the fix commented out: ```diff diff --git a/include/pybind11/detail/common.h b/include/pybind11/detail/common.h index 98d2360..3bad6855 100644 --- a/include/pybind11/detail/common.h +++ b/include/pybind11/detail/common.h @@ -607,7 +607,7 @@ struct from_python_policies { // NOLINTNEXTLINE(google-explicit-constructor) from_python_policies(bool convert, bool none = true) - : rvpp(return_value_policy::automatic_reference), convert(convert), none(none) {} + : /*rvpp(return_value_policy::automatic_reference),*/ convert(convert), none(none) {} // NOLINTNEXTLINE(google-explicit-constructor) from_python_policies(const return_value_policy_pack &rvpp) ``` ``` Running tests in directory "/usr/local/google/home/rwgk/forked/pybind11/tests": ============================= test session starts ============================== platform linux -- Python 3.10.9, pytest-7.1.2, pluggy-1.0.0 -- /usr/bin/python3 cachedir: .pytest_cache C++ Info: Debian Clang 14.0.6 C++17 __pybind11_internals_v4_clang_libstdcpp_cxxabi1002_sh_def__ PYBIND11_SIMPLE_GIL_MANAGEMENT=False rootdir: /usr/local/google/home/rwgk/forked/pybind11/tests, configfile: pytest.ini plugins: xdist-3.0.2, flakefinder-1.1.0 collecting ... collected 58 items / 57 deselected / 1 selected test_return_value_policy_pack.py::test_call_callback_pass_int_owner munmap_chunk(): invalid pointer Fatal Python error: Aborted Current thread 0x00007f686e834040 (most recent call first): File "/usr/local/google/home/rwgk/forked/pybind11/tests/test_return_value_policy_pack.py", line 337 in test_call_callback_pass_int_owner File "/usr/local/lib/python3.10/dist-packages/_pytest/python.py", line 192 in pytest_pyfunc_call File "/usr/local/lib/python3.10/dist-packages/pluggy/_callers.py", line 39 in _multicall File "/usr/local/lib/python3.10/dist-packages/pluggy/_manager.py", line 80 in _hookexec File "/usr/local/lib/python3.10/dist-packages/pluggy/_hooks.py", line 265 in __call__ File "/usr/local/lib/python3.10/dist-packages/_pytest/python.py", line 1761 in runtest File "/usr/local/lib/python3.10/dist-packages/_pytest/runner.py", line 166 in pytest_runtest_call File "/usr/local/lib/python3.10/dist-packages/pluggy/_callers.py", line 39 in _multicall File "/usr/local/lib/python3.10/dist-packages/pluggy/_manager.py", line 80 in _hookexec File "/usr/local/lib/python3.10/dist-packages/pluggy/_hooks.py", line 265 in __call__ File "/usr/local/lib/python3.10/dist-packages/_pytest/runner.py", line 259 in <lambda> File "/usr/local/lib/python3.10/dist-packages/_pytest/runner.py", line 338 in from_call File "/usr/local/lib/python3.10/dist-packages/_pytest/runner.py", line 258 in call_runtest_hook File "/usr/local/lib/python3.10/dist-packages/_pytest/runner.py", line 219 in call_and_report File "/usr/local/lib/python3.10/dist-packages/_pytest/runner.py", line 130 in runtestprotocol File "/usr/local/lib/python3.10/dist-packages/_pytest/runner.py", line 111 in pytest_runtest_protocol File "/usr/local/lib/python3.10/dist-packages/pluggy/_callers.py", line 39 in _multicall File "/usr/local/lib/python3.10/dist-packages/pluggy/_manager.py", line 80 in _hookexec File "/usr/local/lib/python3.10/dist-packages/pluggy/_hooks.py", line 265 in __call__ File "/usr/local/lib/python3.10/dist-packages/_pytest/main.py", line 347 in pytest_runtestloop File "/usr/local/lib/python3.10/dist-packages/pluggy/_callers.py", line 39 in _multicall File "/usr/local/lib/python3.10/dist-packages/pluggy/_manager.py", line 80 in _hookexec File "/usr/local/lib/python3.10/dist-packages/pluggy/_hooks.py", line 265 in __call__ File "/usr/local/lib/python3.10/dist-packages/_pytest/main.py", line 322 in _main File "/usr/local/lib/python3.10/dist-packages/_pytest/main.py", line 268 in wrap_session File "/usr/local/lib/python3.10/dist-packages/_pytest/main.py", line 315 in pytest_cmdline_main File "/usr/local/lib/python3.10/dist-packages/pluggy/_callers.py", line 39 in _multicall File "/usr/local/lib/python3.10/dist-packages/pluggy/_manager.py", line 80 in _hookexec File "/usr/local/lib/python3.10/dist-packages/pluggy/_hooks.py", line 265 in __call__ File "/usr/local/lib/python3.10/dist-packages/_pytest/config/__init__.py", line 164 in main File "/usr/local/lib/python3.10/dist-packages/_pytest/config/__init__.py", line 187 in console_main File "/usr/local/lib/python3.10/dist-packages/pytest/__main__.py", line 5 in <module> File "/usr/lib/python3.10/runpy.py", line 86 in _run_code File "/usr/lib/python3.10/runpy.py", line 196 in _run_module_as_main Extension modules: numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator (total: 13) ```
1 parent 9d9726a commit 0f03f22

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

tests/test_return_value_policy_pack.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,15 @@ int call_virtual_override(const VirtualBase &base, const std::string &which) {
224224
return -99; // Invalid which.
225225
}
226226

227+
struct IntOwner {
228+
int val = 3;
229+
};
230+
231+
int call_callback_pass_int_owner_const_ptr(const std::function<int(const IntOwner *)> &cb) {
232+
IntOwner int_owner;
233+
return cb(&int_owner) + 500;
234+
}
235+
227236
} // namespace return_value_policy_pack
228237
} // namespace pybind11_tests
229238

@@ -426,4 +435,8 @@ TEST_SUBMODULE(return_value_policy_pack, m) {
426435
.def("py_nonp_bs", &VirtualBase::nonp_bs, py::arg("a0"), py::arg("a1"));
427436

428437
m.def("call_virtual_override", call_virtual_override);
438+
439+
py::class_<IntOwner>(m, "IntOwner").def_readonly("val", &IntOwner::val);
440+
441+
m.def("call_callback_pass_int_owner_const_ptr", call_callback_pass_int_owner_const_ptr);
429442
}

tests/test_return_value_policy_pack.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,3 +328,10 @@ def test_virtual_overrides_base(which, expected):
328328
)
329329
else:
330330
assert m.call_virtual_override(b, which) == -expected
331+
332+
333+
def test_call_callback_pass_int_owner():
334+
def cb(int_owner):
335+
return int_owner.val + 40
336+
337+
assert m.call_callback_pass_int_owner_const_ptr(cb) == 543

0 commit comments

Comments
 (0)