Skip to content

Commit 33ac084

Browse files
committed
Fix compilation error on VS2008
1 parent 13ae8dc commit 33ac084

File tree

2 files changed

+37
-15
lines changed

2 files changed

+37
-15
lines changed

src/api/Decompressor.cpp

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,24 +49,26 @@ namespace kanzi {
4949
char _buffer[BUF_SIZE];
5050

5151
virtual int_type underflow() {
52-
if (gptr() < egptr())
53-
return traits_type::to_int_type(*gptr());
52+
if (gptr() < egptr())
53+
return traits_type::to_int_type(*gptr());
5454

55-
// Preserve up to 4 bytes of putback
56-
const int putback = std::min<int>(gptr() - eback(), 4);
55+
// Number of characters to preserve (putback)
56+
int putback = int(gptr() - eback());
5757

58-
// Move putback bytes to the front
59-
std::memmove(_buffer + (4 - putback), gptr() - putback, putback);
58+
if (putback > 4) putback = 4;
6059

61-
// Read new bytes after putback
62-
const int n = READ(_fd, _buffer + 4, BUF_SIZE - 4);
63-
if (n <= 0)
64-
return traits_type::eof();
60+
// Move putback characters to start of buffer
61+
std::memmove(_buffer + (4 - putback), gptr() - putback, putback);
6562

66-
// Set new buffer pointers
67-
setg(_buffer + (4 - putback), _buffer + 4, _buffer + 4 + n);
68-
return traits_type::to_int_type(*gptr());
69-
}
63+
// Read new characters into buffer
64+
const int n = int(READ(_fd, _buffer + 4, BUF_SIZE - 4));
65+
66+
if (n <= 0)
67+
return EOF;
68+
69+
setg(_buffer + (4 - putback), _buffer + 4, _buffer + 4 + n);
70+
return traits_type::to_int_type(*gptr());
71+
}
7072
};
7173

7274
class FileInputStream FINAL : public istream

src/types.hpp

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,27 @@ limitations under the License.
1717
#ifndef _types_
1818
#define _types_
1919

20-
#ifdef _MSC_VER
20+
#if defined(_MSC_VER) && _MSC_VER < 1600
21+
// Visual Studio < 2010: no stdint.h
22+
typedef unsigned char uint8_t;
23+
typedef signed char int8_t;
24+
typedef unsigned short uint16_t;
25+
typedef short int16_t;
26+
typedef unsigned int uint32_t;
27+
typedef int int32_t;
28+
typedef unsigned __int64 uint64_t;
29+
typedef __int64 int64_t;
30+
#else
31+
// Modern compilers
32+
#include <cstdint>
33+
#endif
34+
35+
#if defined(_MSC_VER)
36+
#if _MSC_VER < 1900
37+
// snprintf macro for MSVC < 2015
38+
#define snprintf _snprintf
39+
#endif
40+
2141
#if !defined(__x86_64__)
2242
#define __x86_64__ _M_X64
2343
#endif

0 commit comments

Comments
 (0)