mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	bpo-29935: Fixed error messages in the index() method of tuple, list and deque (#887)
when pass indices of wrong type.
This commit is contained in:
		
							parent
							
								
									762ec97ea6
								
							
						
					
					
						commit
						d4edfc9abf
					
				
					 8 changed files with 31 additions and 19 deletions
				
			
		|  | @ -4892,14 +4892,10 @@ do_call_core(PyObject *func, PyObject *callargs, PyObject *kwdict) | |||
|    and silently boost values less than -PY_SSIZE_T_MAX-1 to -PY_SSIZE_T_MAX-1. | ||||
|    Return 0 on error, 1 on success. | ||||
| */ | ||||
| /* Note:  If v is NULL, return success without storing into *pi.  This
 | ||||
|    is because_PyEval_SliceIndex() is called by apply_slice(), which can be | ||||
|    called by the SLICE opcode with v and/or w equal to NULL. | ||||
| */ | ||||
| int | ||||
| _PyEval_SliceIndex(PyObject *v, Py_ssize_t *pi) | ||||
| { | ||||
|     if (v != NULL) { | ||||
|     if (v != Py_None) { | ||||
|         Py_ssize_t x; | ||||
|         if (PyIndex_Check(v)) { | ||||
|             x = PyNumber_AsSsize_t(v, NULL); | ||||
|  | @ -4918,9 +4914,22 @@ _PyEval_SliceIndex(PyObject *v, Py_ssize_t *pi) | |||
| } | ||||
| 
 | ||||
| int | ||||
| _PyEval_SliceIndexOrNone(PyObject *v, Py_ssize_t *pi) | ||||
| _PyEval_SliceIndexNotNone(PyObject *v, Py_ssize_t *pi) | ||||
| { | ||||
|     return v == Py_None || _PyEval_SliceIndex(v, pi); | ||||
|     Py_ssize_t x; | ||||
|     if (PyIndex_Check(v)) { | ||||
|         x = PyNumber_AsSsize_t(v, NULL); | ||||
|         if (x == -1 && PyErr_Occurred()) | ||||
|             return 0; | ||||
|     } | ||||
|     else { | ||||
|         PyErr_SetString(PyExc_TypeError, | ||||
|                         "slice indices must be integers or " | ||||
|                         "have an __index__ method"); | ||||
|         return 0; | ||||
|     } | ||||
|     *pi = x; | ||||
|     return 1; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Serhiy Storchaka
						Serhiy Storchaka