Hi,

The people involved already know that the avpriv_open patches from
courmisch broke shared builds on Windows in their default
configuration (any that statically link the CRT).
This happens because with a static CRT the file descriptors cannot be
exchanged between libraries.

Since i don't know whats the best way to solve the issue, i would like
to offer the options that i see here, to get the discussion going.

1) Rever the whole set. We've been fine without close-on-exec for
years, and it causes this major headache.

2) Partly revert the set, only use the flag on "open" calls, no
wrapper for fcntl.

3) Call shared builds with static CRT unsupported. I personally do not
agree with this, since its a perfectly valid use-case, as it avoids
the need for the user to install the CRT version matching your
compiler (which usually annoys users)

4) inline avpriv_open, this will most likely end up being rather ugly,
especially with the wchar open wrapper for win32

5) Rename to ff_open and clone the symbol into all libraries, like
done with some data symbols.

Personally, i would favor 2, but as a Windows user that whole flag
doesn't exist/work anyway, so i may not see the big advantage of
supporting legacy systems with fnctl and the like.
5 would give a universal solution, at a slight binary size overhead,
and a bit of uglyness, while 4 is probably even uglier.

3 is unacceptable in my opinion.

Anyway, opinions?

- Hendrik
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to