[Bf-blender-cvs] [254067106e5] master: PyAPI: remove operator methods that leak memory

Campbell Barton noreply at git.blender.org
Thu Sep 13 12:01:43 CEST 2018


Commit: 254067106e58736298b73353281992638d2951ac
Author: Campbell Barton
Date:   Thu Sep 13 20:10:56 2018 +1000
Branches: master
https://developer.blender.org/rB254067106e58736298b73353281992638d2951ac

PyAPI: remove operator methods that leak memory

===================================================================

M	release/scripts/modules/bl_i18n_utils/utils.py
M	release/scripts/modules/bpy/ops.py
M	source/blender/python/intern/bpy_operator.c

===================================================================

diff --git a/release/scripts/modules/bl_i18n_utils/utils.py b/release/scripts/modules/bl_i18n_utils/utils.py
index 4be7ccf3356..55a210c56ed 100644
--- a/release/scripts/modules/bl_i18n_utils/utils.py
+++ b/release/scripts/modules/bl_i18n_utils/utils.py
@@ -208,7 +208,7 @@ def enable_addons(addons=None, support=None, disable=False, check_only=False):
         for cat in dir(bpy.ops):
             cat = getattr(bpy.ops, cat)
             for op in dir(cat):
-                getattr(cat, op).get_rna()
+                getattr(cat, op).get_rna_type()
 
     return ret
 
diff --git a/release/scripts/modules/bpy/ops.py b/release/scripts/modules/bpy/ops.py
index 664dc79b28b..fcba6b3aafc 100644
--- a/release/scripts/modules/bpy/ops.py
+++ b/release/scripts/modules/bpy/ops.py
@@ -26,9 +26,7 @@ op_dir = ops_module.dir
 op_poll = ops_module.poll
 op_call = ops_module.call
 op_as_string = ops_module.as_string
-op_get_rna = ops_module.get_rna
 op_get_rna_type = ops_module.get_rna_type
-op_get_instance = ops_module.get_instance
 
 
 class BPyOps:
@@ -207,14 +205,6 @@ class BPyOpsSubModOp:
         """Internal function for introspection"""
         return op_get_rna_type(self.idname())
 
-    def get_rna(self):
-        """Internal function for introspection"""
-        return op_get_rna(self.idname())
-
-    def get_instance(self):
-        """Internal function for introspection"""
-        return op_get_instance(self.idname())
-
     def __repr__(self):  # useful display, repr(op)
         # import bpy
         return op_as_string(self.idname())
diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c
index 555aec00b2c..d3abaf43aef 100644
--- a/source/blender/python/intern/bpy_operator.c
+++ b/source/blender/python/intern/bpy_operator.c
@@ -422,66 +422,12 @@ static PyObject *pyop_getrna_type(PyObject *UNUSED(self), PyObject *value)
 	return (PyObject *)pyrna;
 }
 
-static PyObject *pyop_getrna(PyObject *UNUSED(self), PyObject *value)
-{
-	wmOperatorType *ot;
-
-	if ((ot = ot_lookup_from_py_string(value, "getrna")) == NULL) {
-		return NULL;
-	}
-
-	/* type */
-	//RNA_pointer_create(NULL, &RNA_Struct, ot->srna, &ptr);
-
-	/* XXX - should call WM_operator_properties_free */
-	PointerRNA ptr;
-	WM_operator_properties_create_ptr(&ptr, ot);
-	WM_operator_properties_sanitize(&ptr, 0);
-
-	BPy_StructRNA *pyrna = (BPy_StructRNA *)pyrna_struct_CreatePyObject(&ptr);
-#ifdef PYRNA_FREE_SUPPORT
-	pyrna->freeptr = true;
-#endif
-	return (PyObject *)pyrna;
-}
-
-static PyObject *pyop_getinstance(PyObject *UNUSED(self), PyObject *value)
-{
-	wmOperatorType *ot;
-	if ((ot = ot_lookup_from_py_string(value, "get_instance")) == NULL) {
-		return NULL;
-	}
-
-	wmOperator *op;
-#ifdef PYRNA_FREE_SUPPORT
-	op = MEM_callocN(sizeof(wmOperator), __func__);
-#else
-	op = PyMem_MALLOC(sizeof(wmOperator));
-	memset(op, 0, sizeof(wmOperator));
-#endif
-	BLI_strncpy(op->idname, ot->idname, sizeof(op->idname)); /* in case its needed */
-	op->type = ot;
-
-	PointerRNA ptr;
-	RNA_pointer_create(NULL, &RNA_Operator, op, &ptr);
-
-	BPy_StructRNA *pyrna = (BPy_StructRNA *)pyrna_struct_CreatePyObject(&ptr);
-#ifdef PYRNA_FREE_SUPPORT
-	pyrna->freeptr = true;
-#endif
-	op->ptr = &pyrna->ptr;
-
-	return (PyObject *)pyrna;
-}
-
 static struct PyMethodDef bpy_ops_methods[] = {
 	{"poll", (PyCFunction) pyop_poll, METH_VARARGS, NULL},
 	{"call", (PyCFunction) pyop_call, METH_VARARGS, NULL},
 	{"as_string", (PyCFunction) pyop_as_string, METH_VARARGS, NULL},
 	{"dir", (PyCFunction) pyop_dir, METH_NOARGS, NULL},
 	{"get_rna_type", (PyCFunction) pyop_getrna_type, METH_O, NULL},
-	{"get_rna", (PyCFunction) pyop_getrna, METH_O, NULL},           /* only for introspection, leaks memory */
-	{"get_instance", (PyCFunction) pyop_getinstance, METH_O, NULL}, /* only for introspection, leaks memory */
 	{"macro_define", (PyCFunction) PYOP_wrap_macro_define, METH_VARARGS, NULL},
 	{NULL, NULL, 0, NULL}
 };



More information about the Bf-blender-cvs mailing list