mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	Issue #22977: Fixed formatting Windows error messages on Wine.
Patch by Martin Panter.
This commit is contained in:
		
						commit
						1399a01b90
					
				
					 3 changed files with 14 additions and 3 deletions
				
			
		|  | @ -6,10 +6,11 @@ | ||||||
| import pickle | import pickle | ||||||
| import weakref | import weakref | ||||||
| import errno | import errno | ||||||
|  | import ctypes | ||||||
| 
 | 
 | ||||||
| from test.support import (TESTFN, captured_output, check_impl_detail, | from test.support import (TESTFN, captured_output, check_impl_detail, | ||||||
|                           check_warnings, cpython_only, gc_collect, run_unittest, |                           check_warnings, cpython_only, gc_collect, run_unittest, | ||||||
|                           no_tracing, unlink) |                           no_tracing, unlink, get_attribute) | ||||||
| 
 | 
 | ||||||
| class NaiveException(Exception): | class NaiveException(Exception): | ||||||
|     def __init__(self, x): |     def __init__(self, x): | ||||||
|  | @ -245,6 +246,13 @@ def test_WindowsError(self): | ||||||
|             self.assertEqual(w.strerror, 'foo') |             self.assertEqual(w.strerror, 'foo') | ||||||
|             self.assertEqual(w.filename, None) |             self.assertEqual(w.filename, None) | ||||||
| 
 | 
 | ||||||
|  |     def test_windows_message(self): | ||||||
|  |         """Should fill in unknown error code in Windows error message""" | ||||||
|  |         windll = get_attribute(ctypes, "windll") | ||||||
|  |         code = int.from_bytes(b"\xE0msc", "big") | ||||||
|  |         with self.assertRaisesRegex(OSError, hex(code)): | ||||||
|  |             windll.kernel32.RaiseException(code, 0, 0, None) | ||||||
|  | 
 | ||||||
|     def testAttributes(self): |     def testAttributes(self): | ||||||
|         # test that exception attributes are happy |         # test that exception attributes are happy | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -10,6 +10,9 @@ Release date: XXX | ||||||
| Core and Builtins | Core and Builtins | ||||||
| ----------------- | ----------------- | ||||||
| 
 | 
 | ||||||
|  | - Issue #22977: Fixed formatting Windows error messages on Wine. | ||||||
|  |   Patch by Martin Panter. | ||||||
|  | 
 | ||||||
| Library | Library | ||||||
| ------- | ------- | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -491,7 +491,7 @@ PyErr_SetFromErrnoWithFilenameObjects(PyObject *exc, PyObject *filenameObject, P | ||||||
|                 /* Only ever seen this in out-of-mem
 |                 /* Only ever seen this in out-of-mem
 | ||||||
|                    situations */ |                    situations */ | ||||||
|                 s_buf = NULL; |                 s_buf = NULL; | ||||||
|                 message = PyUnicode_FromFormat("Windows Error 0x%X", i); |                 message = PyUnicode_FromFormat("Windows Error 0x%x", i); | ||||||
|             } else { |             } else { | ||||||
|                 /* remove trailing cr/lf and dots */ |                 /* remove trailing cr/lf and dots */ | ||||||
|                 while (len > 0 && (s_buf[len-1] <= L' ' || s_buf[len-1] == L'.')) |                 while (len > 0 && (s_buf[len-1] <= L' ' || s_buf[len-1] == L'.')) | ||||||
|  | @ -600,7 +600,7 @@ PyObject *PyErr_SetExcFromWindowsErrWithFilenameObjects( | ||||||
|         NULL);          /* no args */ |         NULL);          /* no args */ | ||||||
|     if (len==0) { |     if (len==0) { | ||||||
|         /* Only seen this in out of mem situations */ |         /* Only seen this in out of mem situations */ | ||||||
|         message = PyUnicode_FromFormat("Windows Error 0x%X", err); |         message = PyUnicode_FromFormat("Windows Error 0x%x", err); | ||||||
|         s_buf = NULL; |         s_buf = NULL; | ||||||
|     } else { |     } else { | ||||||
|         /* remove trailing cr/lf and dots */ |         /* remove trailing cr/lf and dots */ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Serhiy Storchaka
						Serhiy Storchaka