diff options
author | Stephen Gallagher <sgallagh@redhat.com> | 2008-10-28 09:15:33 -0400 |
---|---|---|
committer | Simo Sorce <idra@samba.org> | 2008-11-03 10:12:29 -0500 |
commit | 11c415db488265450163b414316cc3b9def17238 (patch) | |
tree | 4b9b7c84057149cca95302f3ad9a1685bc14d5f2 /server/util/memory.c | |
parent | 6fe2bfce9fb9bb1564be8257cccc52bcec589de4 (diff) | |
download | sssd-11c415db488265450163b414316cc3b9def17238.tar.gz sssd-11c415db488265450163b414316cc3b9def17238.tar.bz2 sssd-11c415db488265450163b414316cc3b9def17238.zip |
Initial memory cleanup work
Diffstat (limited to 'server/util/memory.c')
-rw-r--r-- | server/util/memory.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/server/util/memory.c b/server/util/memory.c new file mode 100644 index 00000000..e73fd016 --- /dev/null +++ b/server/util/memory.c @@ -0,0 +1,26 @@ +#include "util/util.h" + +/* + * talloc_takeover + * This function will take a non-talloc pointer and add it to a talloc + * memory context. It will accept a destructor for the original pointer + * so that when the parent memory context is freed, the non-talloc + * pointer will also be freed properly. + */ +TALLOC_CTX *talloc_takeover(TALLOC_CTX *mem_ctx, void *ptr, int (*destructor)(void **)) { + void **handle; + + if (ptr == NULL) { + return NULL; + } + + handle = talloc_named_const(mem_ctx, sizeof(void *), "void *"); + if (handle == NULL) { + return NULL; + } + + *handle = ptr; + talloc_set_destructor(handle,destructor); + + return handle; +}
\ No newline at end of file |