@@ -256,8 +256,12 @@ inline_code: |
256
256
.def_property("value", &SimBoolean::Get, &SimBoolean::Set, release_gil())
257
257
.def("__repr__", [](const SimBoolean &self) -> py::str {
258
258
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") + ">";
261
265
} else {
262
266
return "<SimBoolean (invalid)>";
263
267
}
@@ -274,8 +278,12 @@ inline_code: |
274
278
if (!self) {
275
279
return "<invalid>";
276
280
} 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;
279
287
}
280
288
#endif
281
289
})
@@ -299,8 +307,12 @@ inline_code: |
299
307
.def_property("value", &SimDouble::Get, &SimDouble::Set, release_gil())
300
308
.def("__repr__", [](const SimDouble &self) -> py::str {
301
309
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) + ">";
304
316
} else {
305
317
return "<SimDouble (invalid)>";
306
318
}
@@ -339,8 +351,12 @@ inline_code: |
339
351
.def_property("value", &SimInt::Get, &SimInt::Set)
340
352
.def("__repr__", [](const SimInt &self) -> py::str {
341
353
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) + ">";
344
360
} else {
345
361
return "<SimInt (invalid)>";
346
362
}
@@ -350,8 +366,12 @@ inline_code: |
350
366
.def_property("value", &SimLong::Get, &SimLong::Set)
351
367
.def("__repr__", [](const SimLong &self) -> py::str {
352
368
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) + ">";
355
375
} else {
356
376
return "<SimLong (invalid)>";
357
377
}
0 commit comments