[FFmpeg-devel] [PATCH v2] os_support, network: Fix build failure on Windows with BZIP2

L. E. Segovia amy at amyspark.me
Sat Jul 29 21:48:45 EEST 2023


Including winsock2.h without WIN32_LEAN_AND_MEAN causes bzlib.h to parse
as nonsense, due to an instance of #define char small in rpcndr.h
(included transitively from windows.h).

See: https://stackoverflow.com/a/27794577
Signed-off-by: L. E. Segovia <amy at amyspark.me>
---
 libavformat/network.h    | 1 +
 libavformat/os_support.c | 6 ++----
 libavformat/os_support.h | 1 +
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/libavformat/network.h b/libavformat/network.h
index ca214087fc..06b6117fc7 100644
--- a/libavformat/network.h
+++ b/libavformat/network.h
@@ -35,6 +35,7 @@
 #endif
 
 #if HAVE_WINSOCK2_H
+#define WIN32_LEAN_AND_MEAN
 #include <winsock2.h>
 #include <ws2tcpip.h>
 
diff --git a/libavformat/os_support.c b/libavformat/os_support.c
index 15cea7fa5b..2de6a7c3d9 100644
--- a/libavformat/os_support.c
+++ b/libavformat/os_support.c
@@ -34,11 +34,9 @@
 #if HAVE_SYS_TIME_H
 #include <sys/time.h>
 #endif /* HAVE_SYS_TIME_H */
-#if HAVE_WINSOCK2_H
-#include <winsock2.h>
-#elif HAVE_SYS_SELECT_H
+#if HAVE_SYS_SELECT_H
 #include <sys/select.h>
-#endif /* HAVE_WINSOCK2_H */
+#endif /* HAVE_SYS_SELECT_H */
 #endif /* !HAVE_POLL_H */
 
 #include "network.h"
diff --git a/libavformat/os_support.h b/libavformat/os_support.h
index f2ff38e23b..5bdd275d70 100644
--- a/libavformat/os_support.h
+++ b/libavformat/os_support.h
@@ -140,6 +140,7 @@ typedef int socklen_t;
 typedef unsigned long nfds_t;
 
 #if HAVE_WINSOCK2_H
+#define WIN32_LEAN_AND_MEAN
 #include <winsock2.h>
 #endif
 #if !HAVE_STRUCT_POLLFD
-- 
2.41.0



More information about the ffmpeg-devel mailing list