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

Martin Storsjö martin at martin.st
Fri Aug 4 15:36:22 EEST 2023


On Thu, 27 Jul 2023, L. E. Segovia wrote:

> 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(-)

The change looks mostly reasonable to me I think, and WIN32_LEAN_AND_MEAN 
is generally beneficial. I've got a couple comments below though.

> 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>

The diff seems very hard to apply. The diff stat above says that this 
shows a snippet of 6 lines originally, 7 lines after the modification - 
but in fact the diff only shows 4 lines originally and 5 lines after the 
modification. I don't know what has happened to the patch, but it makes it 
hard to apply automatically.

> 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"

I presume this is done to avoid touching winsock2.h here, as the headers 
that we've included already define this?

// Martin



More information about the ffmpeg-devel mailing list