fix: add life support to handles cast to string_view (#6092)

* Fix handling of string_view to prevent GC'ing strings before they are used.

* style: pre-commit fixes

* Update cast.h

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
Charles Beattie
2026-06-24 02:44:39 +01:00
committed by GitHub
parent da3bdcad04
commit 59d7cb28c1
3 changed files with 31 additions and 0 deletions

View File

@@ -526,6 +526,9 @@ struct string_caster {
return false;
}
value = StringType(buffer, static_cast<size_t>(size));
if (IsView) {
loader_life_support::add_patient(src);
}
return true;
}
@@ -603,6 +606,9 @@ private:
pybind11_fail("Unexpected PYBIND11_BYTES_AS_STRING() failure.");
}
value = StringType(bytes, (size_t) PYBIND11_BYTES_SIZE(src.ptr()));
if (IsView) {
loader_life_support::add_patient(src);
}
return true;
}
if (PyByteArray_Check(src.ptr())) {
@@ -613,6 +619,9 @@ private:
pybind11_fail("Unexpected PyByteArray_AsString() failure.");
}
value = StringType(bytearray, (size_t) PyByteArray_Size(src.ptr()));
if (IsView) {
loader_life_support::add_patient(src);
}
return true;
}