[flac-dev] Circular preprocessor define with MSVC
Janne Hyvärinen
cse at sci.fi
Sun Apr 7 01:06:06 PDT 2013
On 6.4.2013 23:30, Ulrich Klauer wrote:
> Hi,
> in include/share/alloc.h there is this section:
>
> #ifndef SIZE_MAX
> # ifndef SIZE_T_MAX
> # ifdef _MSC_VER
> # define SIZE_T_MAX SIZE_MAX
> # else
> # error
> # endif
> # endif
> # define SIZE_MAX SIZE_T_MAX
> #endif
>
> So, if we are on MSVC and have neither SIZE_MAX nor SIZE_T_MAX, we'll
> define SIZE_T_MAX to mean SIZE_MAX and SIZE_MAX to mean SIZE_T_MAX.
> I'm afraid this won't work ...
>
> It is like this since commit a4c321e, before that it used to say:
> ...
> # ifdef _MSC_VER
> # define SIZE_T_MAX UINT_MAX /* What happens on 64 bit windows? */
> ...
> I can't offer a patch because I don't know much about MSVC or Windows
> 64 bit, but some kind of fix is obviously needed.
>
>
Patch for the circular define.
-------------- next part --------------
diff --git a/include/share/alloc.h b/include/share/alloc.h
index 8fc17f7..969209e 100644
--- a/include/share/alloc.h
+++ b/include/share/alloc.h
@@ -50,7 +50,11 @@
#ifndef SIZE_MAX
# ifndef SIZE_T_MAX
# ifdef _MSC_VER
-# define SIZE_T_MAX SIZE_MAX
+# ifdef _WIN64
+# define SIZE_T_MAX 0xffffffffffffffffui64
+# else
+# define SIZE_T_MAX 0xffffffff
+# endif
# else
# error
# endif
More information about the flac-dev
mailing list