include/msvcrt: Make sure size_t is properly defined for 64-bit.

Ge van Geldorp ge at gse.nl
Thu Jul 6 15:55:41 CDT 2006


> diff --git a/include/msvcrt/string.h b/include/msvcrt/string.h
> index a821aa2..cc0b25e 100644
> --- a/include/msvcrt/string.h
> +++ b/include/msvcrt/string.h
> @@ -18,8 +18,18 @@ typedef unsigned short wchar_t;
>  #endif
>  #endif
>  
> +#ifndef _MSC_VER
> +# ifndef __int64
> +#  define __int64 long long
> +# endif
> +#endif
> +
>  #ifndef _SIZE_T_DEFINED
> +#ifdef _WIN64
> +typedef unsigned __int64 size_t;
> +#else
>  typedef unsigned int size_t;
> +#endif
>  #define _SIZE_T_DEFINED
>  #endif

Unfortunately, your changes to the submitted patch break it. The problem is
that at this point _WIN64 is not defined yet. It is defined in windef.h
which hasn't been included at this point. With your change, I still get the
following compile-time error during compilation of dlls/msvcrt/test/data.c:

In file included from data.c:21:
./../msvcrt.h:625: error: conflicting types for _strnset
../../../include/msvcrt/string.h:62: error: previous declaration of _strnset
was here

The patch I submitted fixes the problem by moving the include of "windef.h"
a bit up:

diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h
index fc330ce..3da416d 100644
--- a/dlls/msvcrt/msvcrt.h
+++ b/dlls/msvcrt/msvcrt.h
@@ -36,11 +36,12 @@
 #ifndef __WINE_MSVCRT_H
 #define __WINE_MSVCRT_H

+#include "windef.h"
+
 #include <stdarg.h>
 #include <ctype.h>
 #include <string.h>

-#include "windef.h"
 #include "winbase.h"
 #include "winerror.h"
 #include "winnls.h"

Gé van Geldorp.




More information about the wine-devel mailing list