]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Bug 4610: fix 'Assigning a negative value to an implicit unsigned bitfield' on Solaris 11
authorStefan Kruger <stadtkind2@gmx.de>
Tue, 17 Jan 2017 19:29:06 +0000 (08:29 +1300)
committerAmos Jeffries <squid3@treenet.co.nz>
Tue, 17 Jan 2017 19:29:06 +0000 (08:29 +1300)
src/store/forward.h

index 8ae1894635467df62ea03e0d404b280f1491d968..d5b0d126840b705b6caf7af0faa8114f87833050 100644 (file)
@@ -9,7 +9,17 @@
 #ifndef SQUID_STORE_FORWARD_H
 #define SQUID_STORE_FORWARD_H
 
-typedef int32_t sfileno;
+// bug 4610 see comments 22-38
+// Nasty hack, but it turns out C++ allows int32_t to be
+// unsigned when used as a bitmask (as sfile* are later)
+#if INT_MAX == INT32_MAX
+typedef signed int signed_int32_t;
+#elif SHORT_MAX == INT32_MAX
+typedef signed short int signed_int32_t;
+#else
+#error I do not know how to typedef a signed 32bit integer.
+#endif
+typedef signed_int32_t sfileno;
 typedef signed int sdirno;
 
 /// maximum number of entries per cache_dir