@@ -256,8 +256,12 @@ inline_code: |
256256 .def_property("value", &SimBoolean::Get, &SimBoolean::Set, release_gil())
257257 .def("__repr__", [](const SimBoolean &self) -> py::str {
258258 if (self) {
259- py::gil_scoped_release release;
260- return std::string("<SimBoolean value=") + (self.Get() ? "True" : "False") + ">";
259+ bool value;
260+ {
261+ py::gil_scoped_release release;
262+ value = self.Get();
263+ }
264+ return std::string("<SimBoolean value=") + (value ? "True" : "False") + ">";
261265 } else {
262266 return "<SimBoolean (invalid)>";
263267 }
@@ -274,8 +278,12 @@ inline_code: |
274278 if (!self) {
275279 return "<invalid>";
276280 } else {
277- py::gil_scoped_release release;
278- return HALSIM_GetSimDeviceName(self);
281+ const char *name;
282+ {
283+ py::gil_scoped_release release;
284+ name = HALSIM_GetSimDeviceName(self);
285+ }
286+ return name;
279287 }
280288 #endif
281289 })
@@ -299,8 +307,12 @@ inline_code: |
299307 .def_property("value", &SimDouble::Get, &SimDouble::Set, release_gil())
300308 .def("__repr__", [](const SimDouble &self) -> py::str {
301309 if (self) {
302- py::gil_scoped_release release;
303- return "<SimDouble value=" + std::to_string(self.Get()) + ">";
310+ double value;
311+ {
312+ py::gil_scoped_release release;
313+ value = self.Get();
314+ }
315+ return "<SimDouble value=" + std::to_string(value) + ">";
304316 } else {
305317 return "<SimDouble (invalid)>";
306318 }
@@ -339,8 +351,12 @@ inline_code: |
339351 .def_property("value", &SimInt::Get, &SimInt::Set)
340352 .def("__repr__", [](const SimInt &self) -> py::str {
341353 if (self) {
342- py::gil_scoped_release release;
343- return "<SimInt value=" + std::to_string(self.Get()) + ">";
354+ int32_t value;
355+ {
356+ py::gil_scoped_release release;
357+ value = self.Get();
358+ }
359+ return "<SimInt value=" + std::to_string(value) + ">";
344360 } else {
345361 return "<SimInt (invalid)>";
346362 }
@@ -350,8 +366,12 @@ inline_code: |
350366 .def_property("value", &SimLong::Get, &SimLong::Set)
351367 .def("__repr__", [](const SimLong &self) -> py::str {
352368 if (self) {
353- py::gil_scoped_release release;
354- return "<SimLong value=" + std::to_string(self.Get()) + ">";
369+ int64_t value;
370+ {
371+ py::gil_scoped_release release;
372+ value = self.Get();
373+ }
374+ return "<SimLong value=" + std::to_string(value) + ">";
355375 } else {
356376 return "<SimLong (invalid)>";
357377 }
0 commit comments