summaryrefslogtreecommitdiff
path: root/plugins/pychrysa/gtkext/bufferdisplay.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/pychrysa/gtkext/bufferdisplay.c')
-rw-r--r--plugins/pychrysa/gtkext/bufferdisplay.c15
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;
}