From: Vladimír Čunát Date: Thu, 19 Apr 2018 12:28:22 +0000 (+0200) Subject: lib/generic/pack: fix a bug/inconsistency X-Git-Tag: v2.3.0^2~2^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ab7038ca477cca2826c2928784cac878de48a832;p=thirdparty%2Fknot-resolver.git lib/generic/pack: fix a bug/inconsistency The NULL is never tested, and it was breaking our usual iteration pattern. --- diff --git a/lib/generic/pack.h b/lib/generic/pack.h index 90c1b7218..7d906e0bd 100644 --- a/lib/generic/pack.h +++ b/lib/generic/pack.h @@ -96,13 +96,17 @@ typedef array_t(uint8_t) pack_t; #define pack_reserve_mm(pack, objs_count, objs_len, reserve, baton) \ array_reserve_mm((pack), (pack).len + (sizeof(pack_objlen_t)*(objs_count) + (objs_len)), (reserve), (baton)) -/** Return pointer to first packed object. */ +/** Return pointer to first packed object. + * + * Recommended way to iterate: + * for (uint8_t *it = pack_head(pack); it != pack_tail(pack); it = pack_ob_next(it)) + */ #define pack_head(pack) \ - ((pack).len > 0 ? &((pack).at[0]) : NULL) + (&(pack).at[0]) /** Return pack end pointer. */ #define pack_tail(pack) \ - &((pack).at[(pack).len]) + (&(pack).at[(pack).len]) /** Return packed object length. */ static inline pack_objlen_t pack_obj_len(uint8_t *it)