mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Issue #26198: Fixed error messages for some argument parsing errors.
This commit is contained in:
		
						commit
						3e17c788a8
					
				
					 2 changed files with 21 additions and 13 deletions
				
			
		|  | @ -342,7 +342,7 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags) | |||
|                           flags, levels, msgbuf, | ||||
|                           sizeof(msgbuf), &freelist); | ||||
|         if (msg) { | ||||
|             seterror(i+1, msg, levels, fname, msg); | ||||
|             seterror(i+1, msg, levels, fname, message); | ||||
|             return cleanreturn(0, &freelist); | ||||
|         } | ||||
|     } | ||||
|  | @ -535,9 +535,15 @@ converterr(const char *expected, PyObject *arg, char *msgbuf, size_t bufsize) | |||
| { | ||||
|     assert(expected != NULL); | ||||
|     assert(arg != NULL); | ||||
|     PyOS_snprintf(msgbuf, bufsize, | ||||
|                   "must be %.50s, not %.50s", expected, | ||||
|                   arg == Py_None ? "None" : arg->ob_type->tp_name); | ||||
|     if (expected[0] == '(') { | ||||
|         PyOS_snprintf(msgbuf, bufsize, | ||||
|                       "%.100s", expected); | ||||
|     } | ||||
|     else { | ||||
|         PyOS_snprintf(msgbuf, bufsize, | ||||
|                       "must be %.50s, not %.50s", expected, | ||||
|                       arg == Py_None ? "None" : arg->ob_type->tp_name); | ||||
|     } | ||||
|     return msgbuf; | ||||
| } | ||||
| 
 | ||||
|  | @ -741,7 +747,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, | |||
|         if (PyLong_Check(arg)) | ||||
|             ival = PyLong_AsUnsignedLongMask(arg); | ||||
|         else | ||||
|             return converterr("integer<k>", arg, msgbuf, bufsize); | ||||
|             return converterr("int", arg, msgbuf, bufsize); | ||||
|         *p = ival; | ||||
|         break; | ||||
|     } | ||||
|  | @ -766,7 +772,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, | |||
|         if (PyLong_Check(arg)) | ||||
|             ival = PyLong_AsUnsignedLongLongMask(arg); | ||||
|         else | ||||
|             return converterr("integer<K>", arg, msgbuf, bufsize); | ||||
|             return converterr("int", arg, msgbuf, bufsize); | ||||
|         *p = ival; | ||||
|         break; | ||||
|     } | ||||
|  | @ -1123,9 +1129,11 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, | |||
|             } else { | ||||
|                 if (size + 1 > BUFFER_LEN) { | ||||
|                     Py_DECREF(s); | ||||
|                     return converterr( | ||||
|                         "(buffer overflow)", | ||||
|                         arg, msgbuf, bufsize); | ||||
|                     PyErr_Format(PyExc_TypeError, | ||||
|                                  "encoded string too long " | ||||
|                                  "(%zd, maximum length %zd)", | ||||
|                                  (Py_ssize_t)size, (Py_ssize_t)(BUFFER_LEN-1)); | ||||
|                     RETURN_ERR_OCCURRED; | ||||
|                 } | ||||
|             } | ||||
|             memcpy(*buffer, ptr, size+1); | ||||
|  | @ -1147,7 +1155,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, | |||
|             if ((Py_ssize_t)strlen(ptr) != size) { | ||||
|                 Py_DECREF(s); | ||||
|                 return converterr( | ||||
|                     "encoded string without NULL bytes", | ||||
|                     "encoded string without null bytes", | ||||
|                     arg, msgbuf, bufsize); | ||||
|             } | ||||
|             *buffer = PyMem_NEW(char, size + 1); | ||||
|  | @ -1237,7 +1245,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, | |||
| 
 | ||||
|         if (*format != '*') | ||||
|             return converterr( | ||||
|                 "invalid use of 'w' format character", | ||||
|                 "(invalid use of 'w' format character)", | ||||
|                 arg, msgbuf, bufsize); | ||||
|         format++; | ||||
| 
 | ||||
|  | @ -1261,7 +1269,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, | |||
|     } | ||||
| 
 | ||||
|     default: | ||||
|         return converterr("impossible<bad format char>", arg, msgbuf, bufsize); | ||||
|         return converterr("(impossible<bad format char>)", arg, msgbuf, bufsize); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Serhiy Storchaka
						Serhiy Storchaka