Skip to content

Commit

Permalink
Fix small bug introduced with PR #4735 (#4845)
Browse files Browse the repository at this point in the history
* Bug fix: `result[0]` called if `result.empty()`

* Add unit test that fails without the fix.
  • Loading branch information
Ralf W. Grosse-Kunstleve authored Sep 14, 2023
1 parent 8c7b8dd commit d06d536
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
12 changes: 7 additions & 5 deletions include/pybind11/pybind11.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,13 @@ inline std::string replace_newlines_and_squash(const char *text) {
std::string result(text);
bool previous_is_whitespace = false;

// Do not modify string representations
char first_char = result[0];
char last_char = result[result.size() - 1];
if (first_char == last_char && first_char == '\'') {
return result;
if (result.size() >= 2) {
// Do not modify string representations
char first_char = result[0];
char last_char = result[result.size() - 1];
if (first_char == last_char && first_char == '\'') {
return result;
}
}
result.clear();

Expand Down
2 changes: 2 additions & 0 deletions tests/test_kwargs_and_defaults.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@ TEST_SUBMODULE(kwargs_and_defaults, m) {
"kw_lb_func7",
[](const std::string &) {},
py::arg("str_arg") = "First line.\n Second line.");
m.def(
"kw_lb_func8", [](const CustomRepr &) {}, py::arg("custom") = CustomRepr(""));

// test_args_and_kwargs
m.def("args_function", [](py::args args) -> py::tuple {
Expand Down
4 changes: 4 additions & 0 deletions tests/test_kwargs_and_defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ def test_function_signatures(doc):
doc(m.kw_lb_func7)
== "kw_lb_func7(str_arg: str = 'First line.\\n Second line.') -> None"
)
assert (
doc(m.kw_lb_func8)
== "kw_lb_func8(custom: m.kwargs_and_defaults.CustomRepr = ) -> None"
)


def test_named_arguments():
Expand Down

0 comments on commit d06d536

Please sign in to comment.