This is an automated email from the ASF dual-hosted git repository.
emmenlau pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/thrift.git
The following commit(s) were added to refs/heads/master by this push:
new 49c6ec702 TProtocol.h: Be extra careful when including MSVC
Windows-related headers to not pollute the c++ namespace
new 2810fd207 Merge pull request #2862 from
BioDataAnalysis/emmenlau_fix_windows_header_include
49c6ec702 is described below
commit 49c6ec702d963c05fa83470e71a486780ef825bc
Author: Mario Emmenlauer <[email protected]>
AuthorDate: Tue Oct 10 10:46:09 2023 +0200
TProtocol.h: Be extra careful when including MSVC Windows-related headers
to not pollute the c++ namespace
---
lib/cpp/src/thrift/protocol/TProtocol.h | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/lib/cpp/src/thrift/protocol/TProtocol.h
b/lib/cpp/src/thrift/protocol/TProtocol.h
index c6ff36049..237c1e568 100644
--- a/lib/cpp/src/thrift/protocol/TProtocol.h
+++ b/lib/cpp/src/thrift/protocol/TProtocol.h
@@ -21,8 +21,26 @@
#define _THRIFT_PROTOCOL_TPROTOCOL_H_ 1
#ifdef _WIN32
+// Including Winsock2.h adds problematic macros like min() and max().
+// Try to work around:
+#ifndef NOMINMAX
+#define NOMINMAX
+#define _THRIFT_UNDEF_NOMINMAX
+#endif
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#define _THRIFT_UNDEF_WIN32_LEAN_AND_MEAN
+#endif
// Need to come before any Windows.h includes
#include <winsock2.h>
+#ifdef _THRIFT_UNDEF_NOMINMAX
+#undef NOMINMAX
+#undef _THRIFT_UNDEF_NOMINMAX
+#endif
+#ifdef _THRIFT_UNDEF_WIN32_LEAN_AND_MEAN
+#undef WIN32_LEAN_AND_MEAN
+#undef _THRIFT_UNDEF_WIN32_LEAN_AND_MEAN
+#endif
#endif
#include <thrift/transport/TTransport.h>
@@ -558,14 +576,14 @@ public:
void setRecurisionLimit(uint32_t depth) {recursion_limit_ = depth;}
// Returns the minimum amount of bytes needed to store the smallest possible
instance of TType.
- virtual int getMinSerializedSize(TType type) {
+ virtual int getMinSerializedSize(TType type) {
THRIFT_UNUSED_VARIABLE(type);
return 0;
}
protected:
TProtocol(std::shared_ptr<TTransport> ptrans)
- : ptrans_(ptrans), input_recursion_depth_(0), output_recursion_depth_(0),
+ : ptrans_(ptrans), input_recursion_depth_(0), output_recursion_depth_(0),
recursion_limit_(ptrans->getConfiguration()->getRecursionLimit())
{}