diff options
author | Elia Pinto <gitter.spiros@gmail.com> | 2015-04-30 14:44:14 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-05-05 15:26:48 -0700 |
commit | 89c855ed3cbe64bea93ea081d0e96077e9ee8517 (patch) | |
tree | 72ce4c2b43a79f93f955ceafd7cf8f4ebdab6fb7 /t/t4005-diff-rename-2.sh | |
parent | Git 2.2.2 (diff) | |
download | tgif-89c855ed3cbe64bea93ea081d0e96077e9ee8517.tar.xz |
git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array
To get number of elements in an array git use the ARRAY_SIZE macro
defined as:
#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
The problem with it is a possibility of mistakenly passing to it a
pointer instead an array. The ARRAY_SIZE macro as conventionally
defined does not provide good type-safety and the open-coded
approach is more fragile, more verbose and provides no improvement in
type-safety.
Use instead a different but compatible ARRAY_SIZE() macro,
which will also break compile if you try to
use it on a pointer. This implemention revert to the original code
if the compiler doesn't know the typeof and __builtin_types_compatible_p
GCC extensions.
This can ensure our code is robust to changes, without
needing a gratuitous macro or constant. A similar
ARRAY_SIZE implementation also exists in the linux kernel.
Credits to Rusty Russell and his ccan library.
Signed-off-by: Elia Pinto <gitter.spiros@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t4005-diff-rename-2.sh')
0 files changed, 0 insertions, 0 deletions