mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	Handle really big steps in extended slices.
Fixes a test failure on 64 bit platforms (I hope).
This commit is contained in:
		
							parent
							
								
									9050a517c8
								
							
						
					
					
						commit
						cbd6fb9006
					
				
					 2 changed files with 3 additions and 6 deletions
				
			
		| 
						 | 
					@ -121,11 +121,8 @@ PySlice_GetIndicesEx(PySliceObject *r, int length,
 | 
				
			||||||
		*step = 1;
 | 
							*step = 1;
 | 
				
			||||||
	} 
 | 
						} 
 | 
				
			||||||
	else {
 | 
						else {
 | 
				
			||||||
		*step = PyInt_AsLong(r->step);
 | 
							if (!_PyEval_SliceIndex(r->step, step)) return -1;
 | 
				
			||||||
		if (*step == -1 && PyErr_Occurred()) {
 | 
							if (*step == 0) {
 | 
				
			||||||
			return -1;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		else if (*step == 0) {
 | 
					 | 
				
			||||||
			PyErr_SetString(PyExc_ValueError,
 | 
								PyErr_SetString(PyExc_ValueError,
 | 
				
			||||||
					"slice step cannot be zero");
 | 
										"slice step cannot be zero");
 | 
				
			||||||
			return -1;
 | 
								return -1;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3507,7 +3507,7 @@ _PyEval_SliceIndex(PyObject *v, int *pi)
 | 
				
			||||||
		if (x > INT_MAX)
 | 
							if (x > INT_MAX)
 | 
				
			||||||
			x = INT_MAX;
 | 
								x = INT_MAX;
 | 
				
			||||||
		else if (x < -INT_MAX)
 | 
							else if (x < -INT_MAX)
 | 
				
			||||||
			x = 0;
 | 
								x = -INT_MAX;
 | 
				
			||||||
		*pi = x;
 | 
							*pi = x;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue