On 02/08/14 02:51, Emil Velikov wrote: > On 02/08/14 00:26, Ian Romanick wrote: >> On 08/01/2014 09:41 AM, Emil Velikov wrote: >>> ... for win32 builds. Spotted this warning when I've imported the >>> library into waffle, and gave mingw-w64-gcc a bash at compiling it. >>> >>> src/waffle/core/wcore_display.c:37:5: warning: missing braces around >>> initializer [-Wmissing-braces] >>> static mtx_t mutex = _MTX_INITIALIZER_NP; >>> ^ >>> >>> Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> >>> --- >>> include/c11/threads_win32.h | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/include/c11/threads_win32.h b/include/c11/threads_win32.h >>> index 5298a84..35880ba 100644 >>> --- a/include/c11/threads_win32.h >>> +++ b/include/c11/threads_win32.h >>> @@ -85,7 +85,7 @@ Configuration macro: >>> #define TSS_DTOR_ITERATIONS 1 >>> >>> // FIXME: temporary non-standard hack to ease transition >>> -#define _MTX_INITIALIZER_NP {(PCRITICAL_SECTION_DEBUG)-1, -1, 0, 0, 0, 0} >>> +#define _MTX_INITIALIZER_NP {{(PCRITICAL_SECTION_DEBUG)-1, -1, 0, 0, 0, 0}} >> >> This is because CRITICAL_SECTION is actually a typedef of a pointer to >> some structure type, so it needs to be initialized like an array of >> strcutres. Yeah? >> > I wish I could agree. > > CRITICAL_SECTION is a typedef of a typedef'ed struct (no pointers yet) where > the first member is a struct *, as seen below. > > typedef B CRITICAL_SECTION; > typedef struct A { > struct *bla; > ... > } B; > > I remember spending a few hours reading and experimenting with this and every > way I looked at it current code seems sane. In the end I've smashed the > brackets not to pollute the build log and carried on with other stuff :) Don't > think I have checked if MSVC complained about the issue though. Will give it a > try next time I reboot. > > >> I searched a bit on the net, and I could not find a single example of >> initializing a win32 CRITICAL_SECTION this way. Is this a good idea? >> The FIXME comment doesn't inspire confidence... >> > Same here. AFAICS one should init the "mutex" via InitializeCriticalSection or > InitializeCriticalSectionAndSpinCount. Either of which is very Win32 specific > and not at all portable. Perhaps Jose (the author) can share some more > insights on the topic ? > Fun stuff. MSVC produces _no_ warnings with or without this patch. Not sure what exactly is happening here, perhaps I'm hitting some obscure mingw-w64 (gcc?) bug ?
-Emil > > -Emil > >>> /*---------------------------- types ----------------------------*/ >>> typedef struct cnd_t { >>> >> > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev