Explorar o código

Attempt to fix pthread-to-ui64 cast issue.

Ryan C. Gordon %!s(int64=23) %!d(string=hai) anos
pai
achega
9852dec8eb
Modificáronse 1 ficheiros con 14 adicións e 1 borrados
  1. 14 1
      platform/unix.c

+ 14 - 1
platform/unix.c

@@ -290,7 +290,20 @@ void __PHYSFS_platformReleaseMutex(void *mutex) {}
 
 #else
 
-#define PHTREAD_TO_UI64(thr) ((PHYSFS_uint64) (thr))
+/* Just in case; this is a panic value. */
+#if ((!defined SIZEOF_INT) || (SIZEOF_INT <= 0))
+#  define SIZEOF_INT 4
+#endif
+
+#if (SIZEOF_INT == 4)
+#  define PHTREAD_TO_UI64(thr) ( (PHYSFS_uint64) ((PHYSFS_uint32) (thr)) )
+#elif (SIZEOF_INT == 2)
+#  define PHTREAD_TO_UI64(thr) ( (PHYSFS_uint64) ((PHYSFS_uint16) (thr)) )
+#elif (SIZEOF_INT == 1)
+#  define PHTREAD_TO_UI64(thr) ( (PHYSFS_uint64) ((PHYSFS_uint8) (thr)) )
+#else
+#  define PHTREAD_TO_UI64(thr) ((PHYSFS_uint64) (thr))
+#endif
 
 PHYSFS_uint64 __PHYSFS_platformGetThreadID(void)
 {