[pypy-commit] pypy default: translation fixes
arigo
pypy.commits at gmail.com
Sun Jun 11 18:06:51 EDT 2017
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r91581:617de56df11b
Date: 2017-06-11 23:43 +0200
http://bitbucket.org/pypy/pypy/changeset/617de56df11b/
Log: translation fixes
diff --git a/rpython/rlib/rposix_stat.py b/rpython/rlib/rposix_stat.py
--- a/rpython/rlib/rposix_stat.py
+++ b/rpython/rlib/rposix_stat.py
@@ -710,7 +710,7 @@
return win32_attribute_data_to_stat(win32traits, data)
with lltype.scoped_alloc(
- win32traits.BY_HANDLE_FILE_INFORMATION) as data:
+ win32traits.BY_HANDLE_FILE_INFORMATION, zero=True) as data:
res = win32traits.GetFileInformationByHandle(hFile, data)
errcode = rwin32.GetLastError_saved()
rwin32.CloseHandle(hFile)
diff --git a/rpython/rlib/rwin32file.py b/rpython/rlib/rwin32file.py
--- a/rpython/rlib/rwin32file.py
+++ b/rpython/rlib/rwin32file.py
@@ -8,29 +8,14 @@
from rpython.rlib.objectmodel import specialize
from rpython.rlib.rarithmetic import intmask
- at specialize.memo()
-def make_win32_traits(traits):
+
+def GetCConfigGlobal():
from rpython.rlib import rwin32
- if traits.str is unicode:
- suffix = 'W'
- else:
- suffix = 'A'
-
- class CConfig:
+ class CConfigGlobal:
_compilation_info_ = ExternalCompilationInfo(
includes = ['windows.h', 'winbase.h', 'sys/stat.h'],
)
- WIN32_FIND_DATA = platform.Struct(
- 'struct _WIN32_FIND_DATA' + suffix,
- # Only interesting fields
- [('dwFileAttributes', rwin32.DWORD),
- ('nFileSizeHigh', rwin32.DWORD),
- ('nFileSizeLow', rwin32.DWORD),
- ('ftCreationTime', rwin32.FILETIME),
- ('ftLastAccessTime', rwin32.FILETIME),
- ('ftLastWriteTime', rwin32.FILETIME),
- ('cFileName', lltype.FixedSizeArray(traits.CHAR, 250))])
ERROR_FILE_NOT_FOUND = platform.ConstantInteger(
'ERROR_FILE_NOT_FOUND')
ERROR_NO_MORE_FILES = platform.ConstantInteger(
@@ -93,7 +78,40 @@
('nFileIndexHigh', rwin32.DWORD),
('nFileIndexLow', rwin32.DWORD)])
- config = platform.configure(CConfig)
+ return CConfigGlobal
+
+config_global = None
+
+
+ at specialize.memo()
+def make_win32_traits(traits):
+ from rpython.rlib import rwin32
+ global config_global
+
+ if traits.str is unicode:
+ suffix = 'W'
+ else:
+ suffix = 'A'
+
+ class CConfig:
+ _compilation_info_ = ExternalCompilationInfo(
+ includes = ['windows.h', 'winbase.h', 'sys/stat.h'],
+ )
+ WIN32_FIND_DATA = platform.Struct(
+ 'struct _WIN32_FIND_DATA' + suffix,
+ # Only interesting fields
+ [('dwFileAttributes', rwin32.DWORD),
+ ('nFileSizeHigh', rwin32.DWORD),
+ ('nFileSizeLow', rwin32.DWORD),
+ ('ftCreationTime', rwin32.FILETIME),
+ ('ftLastAccessTime', rwin32.FILETIME),
+ ('ftLastWriteTime', rwin32.FILETIME),
+ ('cFileName', lltype.FixedSizeArray(traits.CHAR, 250))])
+
+ if config_global is None:
+ config_global = platform.configure(GetCConfigGlobal())
+ config = config_global.copy()
+ config.update(platform.configure(CConfig))
def external(*args, **kwargs):
kwargs['compilation_info'] = CConfig._compilation_info_
More information about the pypy-commit
mailing list