[utils] Work around PyPy stupidity with Windows DLLs (Fixes #4392)

This commit is contained in:
Philipp Hagemeister 2014-12-12 04:01:08 +01:00
parent d068ba24f3
commit 16040f46d6
2 changed files with 24 additions and 4 deletions

View file

@ -1,8 +1,10 @@
from __future__ import unicode_literals
import ctypes
import getpass
import optparse
import os
import platform
import re
import subprocess
import sys
@ -326,6 +328,22 @@ def workaround_optparse_bug9161():
optparse.OptionGroup.add_option = _compat_add_option
if platform.python_implementation() == 'PyPy':
# PyPy expects byte strings as Windows function names
# https://github.com/rg3/youtube-dl/pull/4392
def compat_WINFUNCTYPE(*args, **kwargs):
real = ctypes.WINFUNCTYPE(*args, **kwargs)
def resf(tpl, *args, **kwargs):
funcname, dll = tpl
return real((str(funcname), dll), *args, **kwargs)
return resf
else:
def compat_WINFUNCTYPE(*args, **kwargs):
return ctypes.WINFUNCTYPE(*args, **kwargs)
__all__ = [
'compat_HTTPError',
'compat_chr',
@ -349,6 +367,7 @@ __all__ = [
'compat_urllib_request',
'compat_urlparse',
'compat_urlretrieve',
'compat_WINFUNCTYPE',
'compat_xml_parse_error',
'shlex_quote',
'subprocess_check_output',