summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2009-06-02 17:25:47 +1000
committerAndrew Tridgell <tridge@samba.org>2009-06-04 14:10:10 +1000
commitda3ee2790089e771689afbebef021a8c8c776306 (patch)
treef12d7ba623fda6e492777310b2422f7165e82e7b
parent3ce37ae7505ec37d0d9bfb1fafe752a232741cca (diff)
downloadsamba-da3ee2790089e771689afbebef021a8c8c776306.tar.gz
samba-da3ee2790089e771689afbebef021a8c8c776306.tar.bz2
samba-da3ee2790089e771689afbebef021a8c8c776306.zip
add NT_STATUS_HAVE_NO_MEMORY_AND_FREE()
In many places we use NT_STATUS_HAVE_NO_MEMORY() to auto-return when a memory allocation fails. In quite a few places where we use this, we end up leaving a tmp_ctx behind, which creates a memory leak. This macro takes a memory context to free when returning the error
-rw-r--r--libcli/util/ntstatus.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/libcli/util/ntstatus.h b/libcli/util/ntstatus.h
index a97ef5337e..dc1fcc41a4 100644
--- a/libcli/util/ntstatus.h
+++ b/libcli/util/ntstatus.h
@@ -651,6 +651,15 @@ extern bool ntstatus_check_dos_mapping;
}\
} while (0)
+/* This varient is for when you want to free a local
+ temporary memory context in the error path */
+#define NT_STATUS_HAVE_NO_MEMORY_AND_FREE(x, ctx) do { \
+ if (!(x)) {\
+ talloc_free(ctx); \
+ return NT_STATUS_NO_MEMORY;\
+ }\
+} while (0)
+
#define NT_STATUS_IS_OK_RETURN(x) do { \
if (NT_STATUS_IS_OK(x)) {\
return x;\