From 62925cfa6e796c546f9450846bb9e110f29139c0 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Wed, 9 Aug 2017 15:24:41 +0200 Subject: [PATCH] README.Coding: add "Error and out logic" MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Ralph Boehme Reviewed-by: Simo Autobuild-User(master): Ralph Böhme Autobuild-Date(master): Thu Aug 10 14:36:01 CEST 2017 on sn-devel-144 --- README.Coding | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/README.Coding b/README.Coding index 19a363fa1dd..e89925cad26 100644 --- a/README.Coding +++ b/README.Coding @@ -445,6 +445,55 @@ The only exception is the test code that depends repeated use of calls like CHECK_STATUS, CHECK_VAL and others. +Error and out logic +------------------- + +Don't do this: + + frame = talloc_stackframe(); + + if (ret == LDB_SUCCESS) { + if (result->count == 0) { + ret = LDB_ERR_NO_SUCH_OBJECT; + } else { + struct ldb_message *match = + get_best_match(dn, result); + if (match == NULL) { + TALLOC_FREE(frame); + return LDB_ERR_OPERATIONS_ERROR; + } + *msg = talloc_move(mem_ctx, &match); + } + } + + TALLOC_FREE(frame); + return ret; + +It should be: + + frame = talloc_stackframe(); + + if (ret != LDB_SUCCESS) { + TALLOC_FREE(frame); + return ret; + } + + if (result->count == 0) { + TALLOC_FREE(frame); + return LDB_ERR_NO_SUCH_OBJECT; + } + + match = get_best_match(dn, result); + if (match == NULL) { + TALLOC_FREE(frame); + return LDB_ERR_OPERATIONS_ERROR; + } + + *msg = talloc_move(mem_ctx, &match); + TALLOC_FREE(frame); + return LDB_SUCCESS; + + DEBUG statements ---------------- -- 2.11.4.GIT