static void pytalloc_dealloc(PyObject* self)
{
pytalloc_Object *obj = (pytalloc_Object *)self;
- assert(talloc_unlink(NULL, obj->talloc_ctx) != -1);
- obj->talloc_ctx = NULL;
+ if (obj->talloc_ctx != NULL) {
+ assert(talloc_unlink(NULL, obj->talloc_ctx) != -1);
+ obj->talloc_ctx = NULL;
+ }
self->ob_type->tp_free(self);
}
static void pytalloc_base_dealloc(PyObject* self)
{
pytalloc_BaseObject *obj = (pytalloc_BaseObject *)self;
- assert(talloc_unlink(NULL, obj->talloc_ctx) != -1);
- obj->talloc_ctx = NULL;
+ if (obj->talloc_ctx != NULL) {
+ assert(talloc_unlink(NULL, obj->talloc_ctx) != -1);
+ obj->talloc_ctx = NULL;
+ }
self->ob_type->tp_free(self);
}
ret->talloc_ctx = talloc_new(NULL);
if (ret->talloc_ctx == NULL) {
- return NULL;
+ Py_DECREF(ret);
+ return PyErr_NoMemory();
}
/*
* talloc_ctx, which is per pytalloc_Object
*/
if (talloc_steal(ret->talloc_ctx, mem_ctx) == NULL) {
- return NULL;
+ Py_DECREF(ret);
+ return PyErr_NoMemory();
}
ret->talloc_ptr_ctx = mem_ctx;
talloc_set_name_const(ret->talloc_ctx, py_type->tp_name);
ret->talloc_ctx = talloc_new(NULL);
if (ret->talloc_ctx == NULL) {
- return NULL;
+ Py_DECREF(ret);
+ return PyErr_NoMemory();
}
if (talloc_steal(ret->talloc_ctx, mem_ctx) == NULL) {
- return NULL;
+ Py_DECREF(ret);
+ return PyErr_NoMemory();
}
talloc_set_name_const(ret->talloc_ctx, py_type->tp_name);
ret->ptr = ptr;
= (pytalloc_BaseObject *)py_type->tp_alloc(py_type, 0);
ret->talloc_ctx = talloc_new(NULL);
if (ret->talloc_ctx == NULL) {
- return NULL;
+ Py_DECREF(ret);
+ return PyErr_NoMemory();
}
if (talloc_reference(ret->talloc_ctx, mem_ctx) == NULL) {
- return NULL;
+ Py_DECREF(ret);
+ return PyErr_NoMemory();
}
talloc_set_name_const(ret->talloc_ctx, py_type->tp_name);
ret->talloc_ptr_ctx = mem_ctx;
= (pytalloc_Object *)py_type->tp_alloc(py_type, 0);
ret->talloc_ctx = talloc_new(NULL);
if (ret->talloc_ctx == NULL) {
- return NULL;
+ Py_DECREF(ret);
+ return PyErr_NoMemory();
}
if (talloc_reference(ret->talloc_ctx, mem_ctx) == NULL) {
- return NULL;
+ Py_DECREF(ret);
+ return PyErr_NoMemory();
}
talloc_set_name_const(ret->talloc_ctx, py_type->tp_name);
ret->ptr = ptr;