summaryrefslogtreecommitdiff
path: root/Build/source/libs/zziplib/zziplib-PATCHES/patch-03-w64-ptr
blob: f11ec7e48198dd259b3fc2c02c37febfcb465847 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
diff -ur zziplib-0.13.62.orig/zzip/zip.c zziplib-0.13.62/zzip/zip.c
--- zziplib-0.13.62.orig/zzip/zip.c	2010-12-29 17:22:29.000000000 +0100
+++ zziplib-0.13.62/zzip/zip.c	2014-07-14 17:05:48.000000000 +0200
@@ -374,15 +374,19 @@
  * making pointer alignments to values that can be handled as structures
  * is tricky. We assume here that an align(4) is sufficient even for
  * 64 bit machines. Note that binary operations are not usually allowed
- * to pointer types but we do need only the lower bits in this implementation,
- * so we can just cast the value to a long value.
+ * to pointer types but we can cast the value to a suitably sized integer.
  */
 _zzip_inline static char *
 __zzip_aligned4(char *p)
 {
 #define aligned4   __zzip_aligned4
-    p += ((long) p) & 1;        /* warnings about truncation of a "pointer" */
-    p += ((long) p) & 2;        /* to a "long int" may be safely ignored :) */
+#ifdef _WIN64
+    p += ((__int64) p) & 1;
+    p += ((__int64) p) & 2;
+#else
+    p += ((long) p) & 1;
+    p += ((long) p) & 2;
+#endif
     return p;
 }