librpc:ndr: Give the optimizer hints for ndr_push_bytes()
authorAndreas Schneider <asn@samba.org>
Thu, 6 Dec 2018 08:35:15 +0000 (09:35 +0100)
committerAndreas Schneider <asn@cryptomilk.org>
Fri, 7 Dec 2018 14:33:38 +0000 (15:33 +0100)
Also remove the redundant check in ndr_push_DATA_BLOB.

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Fri Dec  7 15:33:38 CET 2018 on sn-devel-144

librpc/ndr/ndr_basic.c

index b488c7c22d9d9ef9d7a0a3396188db6020e0cf57..3a5189570c511e6f6629af2549dc33c351991616 100644 (file)
@@ -719,10 +719,10 @@ _PUBLIC_ enum ndr_err_code ndr_pull_trailer_align(struct ndr_pull *ndr, size_t s
 */
 _PUBLIC_ enum ndr_err_code ndr_push_bytes(struct ndr_push *ndr, const uint8_t *data, uint32_t n)
 {
-       if (n == 0) {
+       if (unlikely(n == 0)) {
                return NDR_ERR_SUCCESS;
        }
-       if (data == NULL) {
+       if (unlikely(data == NULL)) {
                return NDR_ERR_INVALID_POINTER;
        }
        NDR_PUSH_NEED_BYTES(ndr, n);
@@ -1335,10 +1335,6 @@ _PUBLIC_ enum ndr_err_code ndr_push_DATA_BLOB(struct ndr_push *ndr, int ndr_flag
        } else {
                NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, blob.length));
        }
-       if (blob.length == 0) {
-               return NDR_ERR_SUCCESS;
-       }
-
        NDR_CHECK(ndr_push_bytes(ndr, blob.data, blob.length));
        return NDR_ERR_SUCCESS;
 }