Skip to content

Commit 1075825

Browse files
committed
fix crash in multi model rendering
1 parent 7b83b36 commit 1075825

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

LAppModelWrapper.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ struct PyLAppModelObject
3636
static int PyLAppModel_init(PyLAppModelObject* self, PyObject* args, PyObject* kwds)
3737
{
3838
self->model = new LAppModel();
39-
self->lastExpression = "";
39+
// 结构体绕过了构造函数,
40+
// 其底层char数组指针可能未指向可用空间,导致访问出错
41+
new (&self->lastExpression) std::string("");
4042
self->expStartedAt = -1;
4143
self->fadeout = -1;
4244
Info("[M] allocate cpp LAppModel(at=%p)", self->model);
@@ -46,6 +48,7 @@ static int PyLAppModel_init(PyLAppModelObject* self, PyObject* args, PyObject* k
4648
static void PyLAppModel_dealloc(PyLAppModelObject* self)
4749
{
4850
Info("[M] deallocate: cpp LAppModel(at=%p)", self->model);
51+
self->lastExpression.~basic_string();
4952
delete self->model;
5053
Info("[M] deallocate: PyLAppModelObject(at=%p)", self);
5154
PyObject_Free(self);

package/main_pygame_three_model.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import live2d.v2 as l2d_v2
55
import resources
66

7+
import faulthandler
8+
faulthandler.enable()
79

810
def main():
911
pygame.init()

0 commit comments

Comments
 (0)