/**
* Import an existing talloc pointer into a Python object.
*/
-PyObject *py_talloc_import_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx,
+PyObject *py_talloc_steal_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx,
void *ptr)
{
py_talloc_Object *ret = (py_talloc_Object *)py_type->tp_alloc(py_type, 0);
* original parent, and creating a reference to the object in the python
* object
*/
-PyObject *py_talloc_reference(PyTypeObject *py_type, void *ptr)
+PyObject *py_talloc_reference_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, void *ptr)
{
py_talloc_Object *ret = (py_talloc_Object *)py_type->tp_alloc(py_type, 0);
ret->talloc_ctx = talloc_new(NULL);
if (ret->talloc_ctx == NULL) {
return NULL;
}
- if (talloc_reference(ret->talloc_ctx, ptr) == NULL) {
+ if (talloc_reference(ret->talloc_ctx, mem_ctx) == NULL) {
return NULL;
}
ret->ptr = ptr;
#define py_talloc_get_ptr(py_obj) (((py_talloc_Object *)py_obj)->ptr)
#define py_talloc_get_mem_ctx(py_obj) ((py_talloc_Object *)py_obj)->talloc_ctx
-PyObject *py_talloc_import_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, void *ptr);
-PyObject *py_talloc_reference(PyTypeObject *py_type, void *ptr);
-#define py_talloc_import(py_type, talloc_ptr) py_talloc_import_ex(py_type, talloc_ptr, talloc_ptr)
+PyObject *py_talloc_steal_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, void *ptr);
+PyObject *py_talloc_reference_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, void *ptr);
+#define py_talloc_steal(py_type, talloc_ptr) py_talloc_steal_ex(py_type, talloc_ptr, talloc_ptr)
+#define py_talloc_reference(py_type, talloc_ptr) py_talloc_reference_ex(py_type, talloc_ptr, talloc_ptr)
/* Sane default implementation of reprfunc. */
PyObject *py_talloc_default_repr(PyObject *py_obj);
-#define py_talloc_new(type, typeobj) py_talloc_import(typeobj, talloc_zero(NULL, type))
+#define py_talloc_new(type, typeobj) py_talloc_steal(typeobj, talloc_zero(NULL, type))
#endif /* _PY_TALLOC_H_ */
error($location, "Unable to determine origin of type `" . mapTypeName($ctype) . "'");
return "NULL"; # FIXME!
}
- return "py_talloc_import_ex($ctype_name, $mem_ctx, $cvar)";
+ return "py_talloc_reference_ex($ctype_name, $mem_ctx, $cvar)";
}
fatal($location, "unknown type $actual_ctype->{TYPE} for ".mapTypeName($ctype) . ": $cvar");
result = reg_get_predefined_key_by_name(ctx, name, &key);
PyErr_WERROR_IS_ERR_RAISE(result);
- return py_talloc_import(&PyRegistryKey, key);
+ return py_talloc_steal(&PyRegistryKey, key);
}
static PyObject *py_key_del_abs(PyObject *self, PyObject *args)
result = reg_get_predefined_key(ctx, hkey, &key);
PyErr_WERROR_IS_ERR_RAISE(result);
- return py_talloc_import(&PyRegistryKey, key);
+ return py_talloc_steal(&PyRegistryKey, key);
}
static PyObject *py_diff_apply(PyObject *self, PyObject *args)
struct registry_context *ctx;
result = reg_open_local(NULL, &ctx);
PyErr_WERROR_IS_ERR_RAISE(result);
- return py_talloc_import(&PyRegistry, ctx);
+ return py_talloc_steal(&PyRegistry, ctx);
}
static PyMethodDef registry_methods[] = {
return NULL;
}
- return py_talloc_import(&PyRegistry, reg_ctx);
+ return py_talloc_steal(&PyRegistry, reg_ctx);
}
static PyObject *py_open_directory(PyObject *self, PyObject *args)
result = reg_open_directory(NULL, location, &key);
PyErr_WERROR_IS_ERR_RAISE(result);
- return py_talloc_import(&PyHiveKey, key);
+ return py_talloc_steal(&PyHiveKey, key);
}
static PyObject *py_create_directory(PyObject *self, PyObject *args)
result = reg_create_directory(NULL, location, &key);
PyErr_WERROR_IS_ERR_RAISE(result);
- return py_talloc_import(&PyHiveKey, key);
+ return py_talloc_steal(&PyHiveKey, key);
}
static PyObject *py_open_ldb_file(PyObject *self, PyObject *args, PyObject *kwargs)
tevent_context_init(NULL), lp_ctx, &key);
PyErr_WERROR_IS_ERR_RAISE(result);
- return py_talloc_import(&PyHiveKey, key);
+ return py_talloc_steal(&PyHiveKey, key);
}
static PyObject *py_str_regtype(PyObject *self, PyObject *args)
static PyObject *py_descriptor_new(PyTypeObject *self, PyObject *args, PyObject *kwargs)
{
- return py_talloc_import(self, security_descriptor_initialise(NULL));
+ return py_talloc_steal(self, security_descriptor_initialise(NULL));
}
static PyObject *py_descriptor_from_sddl(PyObject *self, PyObject *args)
return NULL;
}
- return py_talloc_import((PyTypeObject *)self, secdesc);
+ return py_talloc_steal((PyTypeObject *)self, secdesc);
}
static PyObject *py_descriptor_as_sddl(PyObject *self, PyObject *args)
static PyObject *py_token_new(PyTypeObject *self, PyObject *args, PyObject *kwargs)
{
- return py_talloc_import(self, security_token_initialise(NULL));
+ return py_talloc_steal(self, security_token_initialise(NULL));
}
static PyMethodDef py_token_extra_methods[] = {
sid = dom_sid_parse_talloc(NULL, str);
talloc_free(str);
- ret = py_talloc_import(&dom_sid_Type, sid);
+ ret = py_talloc_steal(&dom_sid_Type, sid);
return ret;
}
sys.path.insert(0, "bin/python")
-from samba.dcerpc import samr, security, lsa
+from samba.dcerpc import samr, security
def display_lsa_string(str):
return str.string