diff options
author | Andrew Tridgell <tridge@samba.org> | 2009-06-02 17:25:47 +1000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2009-06-04 14:10:10 +1000 |
commit | da3ee2790089e771689afbebef021a8c8c776306 (patch) | |
tree | f12d7ba623fda6e492777310b2422f7165e82e7b | |
parent | 3ce37ae7505ec37d0d9bfb1fafe752a232741cca (diff) | |
download | samba-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.h | 9 |
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;\ |