1 | /* |
1 | /* |
2 | * Copyright (c) 2000-2010 Marc Alexander Lehmann <schmorp@schmorp.de> |
2 | * Copyright (c) 2000-2010,2012 Marc Alexander Lehmann <schmorp@schmorp.de> |
3 | * |
3 | * |
4 | * Redistribution and use in source and binary forms, with or without modifica- |
4 | * Redistribution and use in source and binary forms, with or without modifica- |
5 | * tion, are permitted provided that the following conditions are met: |
5 | * tion, are permitted provided that the following conditions are met: |
6 | * |
6 | * |
7 | * 1. Redistributions of source code must retain the above copyright notice, |
7 | * 1. Redistributions of source code must retain the above copyright notice, |
… | |
… | |
112 | u8 *out_end = op + out_len; |
112 | u8 *out_end = op + out_len; |
113 | const u8 *ref; |
113 | const u8 *ref; |
114 | |
114 | |
115 | /* off requires a type wide enough to hold a general pointer difference. |
115 | /* off requires a type wide enough to hold a general pointer difference. |
116 | * ISO C doesn't have that (size_t might not be enough and ptrdiff_t only |
116 | * ISO C doesn't have that (size_t might not be enough and ptrdiff_t only |
117 | * works for differences within a single object). We also assume that no |
117 | * works for differences within a single object). We also assume that |
118 | * no bit pattern traps. Since the only platform that is both non-POSIX |
118 | * no bit pattern traps. Since the only platform that is both non-POSIX |
119 | * and fails to support both assumptions is windows 64 bit, we make a |
119 | * and fails to support both assumptions is windows 64 bit, we make a |
120 | * special workaround for it. |
120 | * special workaround for it. |
121 | */ |
121 | */ |
122 | #if defined (WIN32) && defined (_M_X64) |
122 | #if defined (_WIN32) && defined (_M_X64) |
123 | unsigned _int64 off; /* workaround for missing POSIX compliance */ |
123 | /* workaround for missing POSIX compliance */ |
|
|
124 | #if __GNUC__ |
|
|
125 | unsigned long long off; |
|
|
126 | #else |
|
|
127 | unsigned __int64 off; |
|
|
128 | #endif |
124 | #else |
129 | #else |
125 | unsigned long off; |
130 | unsigned long off; |
126 | #endif |
131 | #endif |
127 | unsigned int hval; |
132 | unsigned int hval; |
128 | int lit; |
133 | int lit; |