mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	bpo-15999: Clean up of handling boolean arguments. (GH-15610)
* Use the 'p' format unit instead of manually called PyObject_IsTrue(). * Pass boolean value instead 0/1 integers to functions that needs boolean. * Convert some arguments to boolean only once.
This commit is contained in:
		
							parent
							
								
									5eca7f3f38
								
							
						
					
					
						commit
						1f21eaa15e
					
				
					 21 changed files with 69 additions and 78 deletions
				
			
		|  | @ -2295,7 +2295,7 @@ def _read_chunk(self): | |||
|         return not eof | ||||
| 
 | ||||
|     def _pack_cookie(self, position, dec_flags=0, | ||||
|                            bytes_to_feed=0, need_eof=0, chars_to_skip=0): | ||||
|                            bytes_to_feed=0, need_eof=False, chars_to_skip=0): | ||||
|         # The meaning of a tell() cookie is: seek to position, set the | ||||
|         # decoder flags to dec_flags, read bytes_to_feed bytes, feed them | ||||
|         # into the decoder with need_eof as the EOF flag, then skip | ||||
|  | @ -2309,7 +2309,7 @@ def _unpack_cookie(self, bigint): | |||
|         rest, dec_flags = divmod(rest, 1<<64) | ||||
|         rest, bytes_to_feed = divmod(rest, 1<<64) | ||||
|         need_eof, chars_to_skip = divmod(rest, 1<<64) | ||||
|         return position, dec_flags, bytes_to_feed, need_eof, chars_to_skip | ||||
|         return position, dec_flags, bytes_to_feed, bool(need_eof), chars_to_skip | ||||
| 
 | ||||
|     def tell(self): | ||||
|         if not self._seekable: | ||||
|  | @ -2383,7 +2383,7 @@ def tell(self): | |||
|             # (a point where the decoder has nothing buffered, so seek() | ||||
|             # can safely start from there and advance to this location). | ||||
|             bytes_fed = 0 | ||||
|             need_eof = 0 | ||||
|             need_eof = False | ||||
|             # Chars decoded since `start_pos` | ||||
|             chars_decoded = 0 | ||||
|             for i in range(skip_bytes, len(next_input)): | ||||
|  | @ -2400,7 +2400,7 @@ def tell(self): | |||
|             else: | ||||
|                 # We didn't get enough decoded data; signal EOF to get more. | ||||
|                 chars_decoded += len(decoder.decode(b'', final=True)) | ||||
|                 need_eof = 1 | ||||
|                 need_eof = True | ||||
|                 if chars_decoded < chars_to_skip: | ||||
|                     raise OSError("can't reconstruct logical file position") | ||||
| 
 | ||||
|  |  | |||
|  | @ -130,7 +130,7 @@ def __init__(self): | |||
|         self.flags = PyCF_DONT_IMPLY_DEDENT | ||||
| 
 | ||||
|     def __call__(self, source, filename, symbol): | ||||
|         codeob = compile(source, filename, symbol, self.flags, 1) | ||||
|         codeob = compile(source, filename, symbol, self.flags, True) | ||||
|         for feature in _features: | ||||
|             if codeob.co_flags & feature.compiler_flag: | ||||
|                 self.flags |= feature.compiler_flag | ||||
|  |  | |||
|  | @ -1326,7 +1326,7 @@ def __run(self, test, compileflags, out): | |||
|             try: | ||||
|                 # Don't blink!  This is where the user's code gets run. | ||||
|                 exec(compile(example.source, filename, "single", | ||||
|                              compileflags, 1), test.globs) | ||||
|                              compileflags, True), test.globs) | ||||
|                 self.debugger.set_continue() # ==== Example Finished ==== | ||||
|                 exception = None | ||||
|             except KeyboardInterrupt: | ||||
|  |  | |||
|  | @ -204,11 +204,11 @@ def main(): | |||
|         print("-t: quote tabs") | ||||
|         print("-d: decode; default encode") | ||||
|         sys.exit(2) | ||||
|     deco = 0 | ||||
|     tabs = 0 | ||||
|     deco = False | ||||
|     tabs = False | ||||
|     for o, a in opts: | ||||
|         if o == '-t': tabs = 1 | ||||
|         if o == '-d': deco = 1 | ||||
|         if o == '-t': tabs = True | ||||
|         if o == '-d': deco = True | ||||
|     if tabs and deco: | ||||
|         sys.stdout = sys.stderr | ||||
|         print("-t and -d are mutually exclusive") | ||||
|  |  | |||
|  | @ -6160,7 +6160,7 @@ class TZInfoSubclass(tzinfo): | |||
|     def test_date_from_date(self): | ||||
|         exp_date = date(1993, 8, 26) | ||||
| 
 | ||||
|         for macro in [0, 1]: | ||||
|         for macro in False, True: | ||||
|             with self.subTest(macro=macro): | ||||
|                 c_api_date = _testcapi.get_date_fromdate( | ||||
|                     macro, | ||||
|  | @ -6173,7 +6173,7 @@ def test_date_from_date(self): | |||
|     def test_datetime_from_dateandtime(self): | ||||
|         exp_date = datetime(1993, 8, 26, 22, 12, 55, 99999) | ||||
| 
 | ||||
|         for macro in [0, 1]: | ||||
|         for macro in False, True: | ||||
|             with self.subTest(macro=macro): | ||||
|                 c_api_date = _testcapi.get_datetime_fromdateandtime( | ||||
|                     macro, | ||||
|  | @ -6191,7 +6191,7 @@ def test_datetime_from_dateandtimeandfold(self): | |||
|         exp_date = datetime(1993, 8, 26, 22, 12, 55, 99999) | ||||
| 
 | ||||
|         for fold in [0, 1]: | ||||
|             for macro in [0, 1]: | ||||
|             for macro in False, True: | ||||
|                 with self.subTest(macro=macro, fold=fold): | ||||
|                     c_api_date = _testcapi.get_datetime_fromdateandtimeandfold( | ||||
|                         macro, | ||||
|  | @ -6210,7 +6210,7 @@ def test_datetime_from_dateandtimeandfold(self): | |||
|     def test_time_from_time(self): | ||||
|         exp_time = time(22, 12, 55, 99999) | ||||
| 
 | ||||
|         for macro in [0, 1]: | ||||
|         for macro in False, True: | ||||
|             with self.subTest(macro=macro): | ||||
|                 c_api_time = _testcapi.get_time_fromtime( | ||||
|                     macro, | ||||
|  | @ -6225,7 +6225,7 @@ def test_time_from_timeandfold(self): | |||
|         exp_time = time(22, 12, 55, 99999) | ||||
| 
 | ||||
|         for fold in [0, 1]: | ||||
|             for macro in [0, 1]: | ||||
|             for macro in False, True: | ||||
|                 with self.subTest(macro=macro, fold=fold): | ||||
|                     c_api_time = _testcapi.get_time_fromtimeandfold( | ||||
|                         macro, | ||||
|  | @ -6241,7 +6241,7 @@ def test_time_from_timeandfold(self): | |||
|     def test_delta_from_dsu(self): | ||||
|         exp_delta = timedelta(26, 55, 99999) | ||||
| 
 | ||||
|         for macro in [0, 1]: | ||||
|         for macro in False, True: | ||||
|             with self.subTest(macro=macro): | ||||
|                 c_api_delta = _testcapi.get_delta_fromdsu( | ||||
|                     macro, | ||||
|  | @ -6254,7 +6254,7 @@ def test_delta_from_dsu(self): | |||
|     def test_date_from_timestamp(self): | ||||
|         ts = datetime(1995, 4, 12).timestamp() | ||||
| 
 | ||||
|         for macro in [0, 1]: | ||||
|         for macro in False, True: | ||||
|             with self.subTest(macro=macro): | ||||
|                 d = _testcapi.get_date_fromtimestamp(int(ts), macro) | ||||
| 
 | ||||
|  | @ -6272,7 +6272,7 @@ def test_datetime_from_timestamp(self): | |||
| 
 | ||||
|         from_timestamp = _testcapi.get_datetime_fromtimestamp | ||||
|         for case in cases: | ||||
|             for macro in [0, 1]: | ||||
|             for macro in False, True: | ||||
|                 with self.subTest(case=case, macro=macro): | ||||
|                     dtup, tzinfo, usetz = case | ||||
|                     dt_orig = datetime(*dtup, tzinfo=tzinfo) | ||||
|  |  | |||
|  | @ -182,7 +182,7 @@ def f(): | |||
|     def test_timeout(self): | ||||
|         lock = self.locktype() | ||||
|         # Can't set timeout if not blocking | ||||
|         self.assertRaises(ValueError, lock.acquire, 0, 1) | ||||
|         self.assertRaises(ValueError, lock.acquire, False, 1) | ||||
|         # Invalid timeout values | ||||
|         self.assertRaises(ValueError, lock.acquire, timeout=-100) | ||||
|         self.assertRaises(OverflowError, lock.acquire, timeout=1e100) | ||||
|  |  | |||
|  | @ -320,8 +320,8 @@ def test_compile(self): | |||
|         bom = b'\xef\xbb\xbf' | ||||
|         compile(bom + b'print(1)\n', '', 'exec') | ||||
|         compile(source='pass', filename='?', mode='exec') | ||||
|         compile(dont_inherit=0, filename='tmp', source='0', mode='eval') | ||||
|         compile('pass', '?', dont_inherit=1, mode='exec') | ||||
|         compile(dont_inherit=False, filename='tmp', source='0', mode='eval') | ||||
|         compile('pass', '?', dont_inherit=True, mode='exec') | ||||
|         compile(memoryview(b"text"), "name", "exec") | ||||
|         self.assertRaises(TypeError, compile) | ||||
|         self.assertRaises(ValueError, compile, 'print(42)\n', '<string>', 'badmode') | ||||
|  | @ -1853,7 +1853,7 @@ def test_basic(self): | |||
|         self.assertEqual(data, sorted(copy, key=lambda x: -x)) | ||||
|         self.assertNotEqual(data, copy) | ||||
|         random.shuffle(copy) | ||||
|         self.assertEqual(data, sorted(copy, reverse=1)) | ||||
|         self.assertEqual(data, sorted(copy, reverse=True)) | ||||
|         self.assertNotEqual(data, copy) | ||||
| 
 | ||||
|     def test_bad_arguments(self): | ||||
|  |  | |||
|  | @ -48,7 +48,7 @@ def _check_ioctl_mutate_len(self, nbytes=None): | |||
|         else: | ||||
|             buf.append(fill) | ||||
|         with open("/dev/tty", "rb") as tty: | ||||
|             r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, 1) | ||||
|             r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, True) | ||||
|         rpgrp = buf[0] | ||||
|         self.assertEqual(r, 0) | ||||
|         self.assertIn(rpgrp, ids) | ||||
|  |  | |||
|  | @ -407,9 +407,9 @@ def test_move_to_end(self): | |||
|         self.assertEqual(list(od), list('abcde')) | ||||
|         od.move_to_end('c') | ||||
|         self.assertEqual(list(od), list('abdec')) | ||||
|         od.move_to_end('c', 0) | ||||
|         od.move_to_end('c', False) | ||||
|         self.assertEqual(list(od), list('cabde')) | ||||
|         od.move_to_end('c', 0) | ||||
|         od.move_to_end('c', False) | ||||
|         self.assertEqual(list(od), list('cabde')) | ||||
|         od.move_to_end('e') | ||||
|         self.assertEqual(list(od), list('cabde')) | ||||
|  | @ -418,7 +418,7 @@ def test_move_to_end(self): | |||
|         with self.assertRaises(KeyError): | ||||
|             od.move_to_end('x') | ||||
|         with self.assertRaises(KeyError): | ||||
|             od.move_to_end('x', 0) | ||||
|             od.move_to_end('x', False) | ||||
| 
 | ||||
|     def test_move_to_end_issue25406(self): | ||||
|         OrderedDict = self.OrderedDict | ||||
|  |  | |||
|  | @ -2820,15 +2820,15 @@ def test_asucs4(self): | |||
|         for s in ['abc', '\xa1\xa2', '\u4f60\u597d', 'a\U0001f600', | ||||
|                   'a\ud800b\udfffc', '\ud834\udd1e']: | ||||
|             l = len(s) | ||||
|             self.assertEqual(unicode_asucs4(s, l, 1), s+'\0') | ||||
|             self.assertEqual(unicode_asucs4(s, l, 0), s+'\uffff') | ||||
|             self.assertEqual(unicode_asucs4(s, l+1, 1), s+'\0\uffff') | ||||
|             self.assertEqual(unicode_asucs4(s, l+1, 0), s+'\0\uffff') | ||||
|             self.assertRaises(SystemError, unicode_asucs4, s, l-1, 1) | ||||
|             self.assertRaises(SystemError, unicode_asucs4, s, l-2, 0) | ||||
|             self.assertEqual(unicode_asucs4(s, l, True), s+'\0') | ||||
|             self.assertEqual(unicode_asucs4(s, l, False), s+'\uffff') | ||||
|             self.assertEqual(unicode_asucs4(s, l+1, True), s+'\0\uffff') | ||||
|             self.assertEqual(unicode_asucs4(s, l+1, False), s+'\0\uffff') | ||||
|             self.assertRaises(SystemError, unicode_asucs4, s, l-1, True) | ||||
|             self.assertRaises(SystemError, unicode_asucs4, s, l-2, False) | ||||
|             s = '\0'.join([s, s]) | ||||
|             self.assertEqual(unicode_asucs4(s, len(s), 1), s+'\0') | ||||
|             self.assertEqual(unicode_asucs4(s, len(s), 0), s+'\uffff') | ||||
|             self.assertEqual(unicode_asucs4(s, len(s), True), s+'\0') | ||||
|             self.assertEqual(unicode_asucs4(s, len(s), False), s+'\uffff') | ||||
| 
 | ||||
|     # Test PyUnicode_AsUTF8() | ||||
|     @support.cpython_only | ||||
|  |  | |||
|  | @ -262,7 +262,7 @@ def _acquire_restore(self, x): | |||
|     def _is_owned(self): | ||||
|         # Return True if lock is owned by current_thread. | ||||
|         # This method is called only if _lock doesn't have _is_owned(). | ||||
|         if self._lock.acquire(0): | ||||
|         if self._lock.acquire(False): | ||||
|             self._lock.release() | ||||
|             return False | ||||
|         else: | ||||
|  |  | |||
|  | @ -2241,7 +2241,7 @@ class Tk(Misc, Wm): | |||
|     _w = '.' | ||||
| 
 | ||||
|     def __init__(self, screenName=None, baseName=None, className='Tk', | ||||
|                  useTk=1, sync=0, use=None): | ||||
|                  useTk=True, sync=False, use=None): | ||||
|         """Return a new Toplevel widget on screen SCREENNAME. A new Tcl interpreter will | ||||
|         be created. BASENAME will be used for the identification of the profile file (see | ||||
|         readprofile). | ||||
|  | @ -2259,7 +2259,7 @@ def __init__(self, screenName=None, baseName=None, className='Tk', | |||
|             baseName, ext = os.path.splitext(baseName) | ||||
|             if ext not in ('.py', '.pyc'): | ||||
|                 baseName = baseName + ext | ||||
|         interactive = 0 | ||||
|         interactive = False | ||||
|         self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) | ||||
|         if useTk: | ||||
|             self._loadtk() | ||||
|  | @ -2361,7 +2361,7 @@ def __getattr__(self, attr): | |||
| # copied into the Pack, Place or Grid class. | ||||
| 
 | ||||
| 
 | ||||
| def Tcl(screenName=None, baseName=None, className='Tk', useTk=0): | ||||
| def Tcl(screenName=None, baseName=None, className='Tk', useTk=False): | ||||
|     return Tk(screenName, baseName, className, useTk) | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -383,8 +383,10 @@ _io_open_impl(PyObject *module, PyObject *file, const char *mode, | |||
|             encoding = "utf-8"; | ||||
|         } | ||||
| #endif | ||||
|         raw = PyObject_CallFunction(RawIO_class, | ||||
|                                     "OsiO", path_or_fd, rawmode, closefd, opener); | ||||
|         raw = PyObject_CallFunction(RawIO_class, "OsOO", | ||||
|                                     path_or_fd, rawmode, | ||||
|                                     closefd ? Py_True : Py_False, | ||||
|                                     opener); | ||||
|     } | ||||
| 
 | ||||
|     if (raw == NULL) | ||||
|  | @ -476,10 +478,10 @@ _io_open_impl(PyObject *module, PyObject *file, const char *mode, | |||
| 
 | ||||
|     /* wraps into a TextIOWrapper */ | ||||
|     wrapper = PyObject_CallFunction((PyObject *)&PyTextIOWrapper_Type, | ||||
|                                     "Osssi", | ||||
|                                     "OsssO", | ||||
|                                     buffer, | ||||
|                                     encoding, errors, newline, | ||||
|                                     line_buffering); | ||||
|                                     line_buffering ? Py_True : Py_False); | ||||
|     if (wrapper == NULL) | ||||
|         goto error; | ||||
|     result = wrapper; | ||||
|  |  | |||
|  | @ -714,9 +714,9 @@ _io_StringIO___init___impl(stringio *self, PyObject *value, | |||
|     } | ||||
| 
 | ||||
|     if (self->readuniversal) { | ||||
|         self->decoder = PyObject_CallFunction( | ||||
|         self->decoder = PyObject_CallFunctionObjArgs( | ||||
|             (PyObject *)&PyIncrementalNewlineDecoder_Type, | ||||
|             "Oi", Py_None, (int) self->readtranslate); | ||||
|             Py_None, self->readtranslate ? Py_True : Py_False, NULL); | ||||
|         if (self->decoder == NULL) | ||||
|             return -1; | ||||
|     } | ||||
|  |  | |||
|  | @ -880,9 +880,9 @@ _textiowrapper_set_decoder(textio *self, PyObject *codec_info, | |||
|         return -1; | ||||
| 
 | ||||
|     if (self->readuniversal) { | ||||
|         PyObject *incrementalDecoder = PyObject_CallFunction( | ||||
|         PyObject *incrementalDecoder = PyObject_CallFunctionObjArgs( | ||||
|             (PyObject *)&PyIncrementalNewlineDecoder_Type, | ||||
|             "Oi", self->decoder, (int)self->readtranslate); | ||||
|             self->decoder, self->readtranslate ? Py_True : Py_False, NULL); | ||||
|         if (incrementalDecoder == NULL) | ||||
|             return -1; | ||||
|         Py_CLEAR(self->decoder); | ||||
|  | @ -2591,8 +2591,8 @@ _io_TextIOWrapper_seek_impl(textio *self, PyObject *cookieObj, int whence) | |||
|         } | ||||
|         Py_XSETREF(self->snapshot, snapshot); | ||||
| 
 | ||||
|         decoded = _PyObject_CallMethodId(self->decoder, &PyId_decode, | ||||
|             "Oi", input_chunk, (int)cookie.need_eof); | ||||
|         decoded = _PyObject_CallMethodIdObjArgs(self->decoder, &PyId_decode, | ||||
|             input_chunk, cookie.need_eof ? Py_True : Py_False, NULL); | ||||
| 
 | ||||
|         if (check_decoded(decoded) < 0) | ||||
|             goto fail; | ||||
|  | @ -2819,7 +2819,7 @@ _io_TextIOWrapper_tell_impl(textio *self) | |||
|     if (input == input_end) { | ||||
|         /* We didn't get enough decoded data; signal EOF to get more. */ | ||||
|         PyObject *decoded = _PyObject_CallMethodId( | ||||
|             self->decoder, &PyId_decode, "yi", "", /* final = */ 1); | ||||
|             self->decoder, &PyId_decode, "yO", "", /* final = */ Py_True); | ||||
|         if (check_decoded(decoded) < 0) | ||||
|             goto fail; | ||||
|         chars_decoded += PyUnicode_GET_LENGTH(decoded); | ||||
|  |  | |||
|  | @ -1059,10 +1059,10 @@ cycle_reduce(cycleobject *lz, PyObject *Py_UNUSED(ignored)) | |||
|             } | ||||
|             Py_DECREF(res); | ||||
|         } | ||||
|         return Py_BuildValue("O(N)(Oi)", Py_TYPE(lz), it, lz->saved, 1); | ||||
|         return Py_BuildValue("O(N)(OO)", Py_TYPE(lz), it, lz->saved, Py_True); | ||||
|     } | ||||
|     return Py_BuildValue("O(O)(Oi)", Py_TYPE(lz), lz->it, lz->saved, | ||||
|                          lz->firstpass); | ||||
|     return Py_BuildValue("O(O)(OO)", Py_TYPE(lz), lz->it, lz->saved, | ||||
|                          lz->firstpass ? Py_True : Py_False); | ||||
| } | ||||
| 
 | ||||
| static PyObject * | ||||
|  |  | |||
|  | @ -292,7 +292,7 @@ pymain_run_module(const wchar_t *modname, int set_argv0) | |||
|         Py_DECREF(runmodule); | ||||
|         return pymain_exit_err_print(); | ||||
|     } | ||||
|     runargs = Py_BuildValue("(Oi)", module, set_argv0); | ||||
|     runargs = PyTuple_Pack(2, module, set_argv0 ? Py_True : Py_False); | ||||
|     if (runargs == NULL) { | ||||
|         fprintf(stderr, | ||||
|             "Could not create arguments for runpy._run_module_as_main\n"); | ||||
|  |  | |||
|  | @ -1080,25 +1080,20 @@ parser__pickler(PyObject *self, PyObject *args) | |||
|     NOTE(ARGUNUSED(self)) | ||||
|     PyObject *result = NULL; | ||||
|     PyObject *st = NULL; | ||||
|     PyObject *empty_dict = NULL; | ||||
| 
 | ||||
|     if (PyArg_ParseTuple(args, "O!:_pickler", &PyST_Type, &st)) { | ||||
|         PyObject *newargs; | ||||
|         PyObject *tuple; | ||||
| 
 | ||||
|         if ((empty_dict = PyDict_New()) == NULL) | ||||
|             goto finally; | ||||
|         if ((newargs = Py_BuildValue("Oi", st, 1)) == NULL) | ||||
|             goto finally; | ||||
|         tuple = parser_st2tuple((PyST_Object*)NULL, newargs, empty_dict); | ||||
|         if ((newargs = PyTuple_Pack(2, st, Py_True)) == NULL) | ||||
|             return NULL; | ||||
|         tuple = parser_st2tuple((PyST_Object*)NULL, newargs, NULL); | ||||
|         if (tuple != NULL) { | ||||
|             result = Py_BuildValue("O(O)", pickle_constructor, tuple); | ||||
|             Py_DECREF(tuple); | ||||
|         } | ||||
|         Py_DECREF(newargs); | ||||
|     } | ||||
|   finally: | ||||
|     Py_XDECREF(empty_dict); | ||||
| 
 | ||||
|     return (result); | ||||
| } | ||||
|  |  | |||
|  | @ -38,9 +38,9 @@ PyFile_FromFd(int fd, const char *name, const char *mode, int buffering, const c | |||
|     io = PyImport_ImportModule("_io"); | ||||
|     if (io == NULL) | ||||
|         return NULL; | ||||
|     stream = _PyObject_CallMethodId(io, &PyId_open, "isisssi", fd, mode, | ||||
|     stream = _PyObject_CallMethodId(io, &PyId_open, "isisssO", fd, mode, | ||||
|                                  buffering, encoding, errors, | ||||
|                                  newline, closefd); | ||||
|                                  newline, closefd ? Py_True : Py_False); | ||||
|     Py_DECREF(io); | ||||
|     if (stream == NULL) | ||||
|         return NULL; | ||||
|  |  | |||
|  | @ -1820,8 +1820,9 @@ static PyObject * | |||
| builtin_print(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) | ||||
| { | ||||
|     static const char * const _keywords[] = {"sep", "end", "file", "flush", 0}; | ||||
|     static struct _PyArg_Parser _parser = {"|OOOO:print", _keywords, 0}; | ||||
|     PyObject *sep = NULL, *end = NULL, *file = NULL, *flush = NULL; | ||||
|     static struct _PyArg_Parser _parser = {"|OOOp:print", _keywords, 0}; | ||||
|     PyObject *sep = NULL, *end = NULL, *file = NULL; | ||||
|     int flush = 0; | ||||
|     int i, err; | ||||
| 
 | ||||
|     if (kwnames != NULL && | ||||
|  | @ -1883,19 +1884,12 @@ builtin_print(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject | |||
|     if (err) | ||||
|         return NULL; | ||||
| 
 | ||||
|     if (flush != NULL) { | ||||
|         PyObject *tmp; | ||||
|         int do_flush = PyObject_IsTrue(flush); | ||||
|         if (do_flush == -1) | ||||
|             return NULL; | ||||
|         else if (do_flush) { | ||||
|             tmp = _PyObject_CallMethodIdNoArgs(file, &PyId_flush); | ||||
|     if (flush) { | ||||
|         PyObject *tmp = _PyObject_CallMethodIdNoArgs(file, &PyId_flush); | ||||
|         if (tmp == NULL) | ||||
|             return NULL; | ||||
|             else | ||||
|         Py_DECREF(tmp); | ||||
|     } | ||||
|     } | ||||
| 
 | ||||
|     Py_RETURN_NONE; | ||||
| } | ||||
|  |  | |||
|  | @ -1735,10 +1735,10 @@ create_stdio(const PyConfig *config, PyObject* io, | |||
|         mode = "wb"; | ||||
|     else | ||||
|         mode = "rb"; | ||||
|     buf = _PyObject_CallMethodId(io, &PyId_open, "isiOOOi", | ||||
|     buf = _PyObject_CallMethodId(io, &PyId_open, "isiOOOO", | ||||
|                                  fd, mode, buffering, | ||||
|                                  Py_None, Py_None, /* encoding, errors */ | ||||
|                                  Py_None, 0); /* newline, closefd */ | ||||
|                                  Py_None, Py_False); /* newline, closefd */ | ||||
|     if (buf == NULL) | ||||
|         goto error; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Serhiy Storchaka
						Serhiy Storchaka