Thread (37 messages) 37 messages, 10 authors, 2018-03-22

Re: [PATCH v5 0/2] Remove false-positive VLAs when using max()

From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2018-03-20 23:26:52
Also in: linux-input, lkml

On Tue, Mar 20, 2018 at 4:23 PM, Linus Torvalds
[off-list ref] wrote:
Hmm. So thanks to the diseased mind of Martin Uecker, there's a better
test for "__is_constant()":

  /* Glory to Martin Uecker [off-list ref] */
  #define __is_constant(a) \
        (sizeof(int) == sizeof(*(1 ? ((void*)((a) * 0l)) : (int*)1)))

that is actually *specified* by the C standard to work, and doesn't
even depend on any gcc extensions.
Well, it does depend on 'sizeof(*(void *)X)' being 1 and the compiler
not complaining about it, and that sizeof(int) is not 1.

But since we depend on those things in the kernel anyway, that's fine.

                Linus
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help