diff options
Diffstat (limited to 'plugins/pychrysa/gtkext/bufferdisplay.c')
-rw-r--r-- | plugins/pychrysa/gtkext/bufferdisplay.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/plugins/pychrysa/gtkext/bufferdisplay.c b/plugins/pychrysa/gtkext/bufferdisplay.c index 7cc82ff..a6e5327 100644 --- a/plugins/pychrysa/gtkext/bufferdisplay.c +++ b/plugins/pychrysa/gtkext/bufferdisplay.c @@ -25,6 +25,7 @@ #include "bufferdisplay.h" +#include <string.h> #include <pygobject.h> @@ -65,7 +66,7 @@ PyTypeObject *get_python_buffer_display_type(void) .tp_name = "pychrysalide.gtkext.BufferDisplay", .tp_basicsize = sizeof(PyGObject), - .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE, .tp_doc = "PyChrysalide buffer display.", @@ -74,7 +75,17 @@ PyTypeObject *get_python_buffer_display_type(void) }; - return &py_buffer_display_type; + static PyTypeObject *result = NULL; + + if (result == NULL) + { + result = calloc(1, sizeof(PyTypeObject)); + + memcpy(result, &py_buffer_display_type, sizeof(PyTypeObject)); + + } + + return result; } |