mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	Merge ssize_t branch.
This commit is contained in:
		
							parent
							
								
									4482929734
								
							
						
					
					
						commit
						18e165558b
					
				
					 102 changed files with 2659 additions and 1677 deletions
				
			
		| 
						 | 
				
			
			@ -599,7 +599,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throw)
 | 
			
		|||
 | 
			
		||||
/* Code access macros */
 | 
			
		||||
 | 
			
		||||
#define INSTR_OFFSET()	(next_instr - first_instr)
 | 
			
		||||
#define INSTR_OFFSET()	((int)(next_instr - first_instr))
 | 
			
		||||
#define NEXTOP()	(*next_instr++)
 | 
			
		||||
#define NEXTARG()	(next_instr += 2, (next_instr[-1]<<8) + next_instr[-2])
 | 
			
		||||
#define PEEKARG()	((next_instr[2]<<8) + next_instr[1])
 | 
			
		||||
| 
						 | 
				
			
			@ -637,7 +637,9 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throw)
 | 
			
		|||
 | 
			
		||||
/* Stack manipulation macros */
 | 
			
		||||
 | 
			
		||||
#define STACK_LEVEL()	(stack_pointer - f->f_valuestack)
 | 
			
		||||
/* The stack can grow at most MAXINT deep, as co_nlocals and
 | 
			
		||||
   co_stacksize are ints. */
 | 
			
		||||
#define STACK_LEVEL()	((int)(stack_pointer - f->f_valuestack))
 | 
			
		||||
#define EMPTY()		(STACK_LEVEL() == 0)
 | 
			
		||||
#define TOP()		(stack_pointer[-1])
 | 
			
		||||
#define SECOND()	(stack_pointer[-2])
 | 
			
		||||
| 
						 | 
				
			
			@ -3857,7 +3859,7 @@ ext_do_call(PyObject *func, PyObject ***pp_stack, int flags, int na, int nk)
 | 
			
		|||
   called by the SLICE opcode with v and/or w equal to NULL.
 | 
			
		||||
*/
 | 
			
		||||
int
 | 
			
		||||
_PyEval_SliceIndex(PyObject *v, int *pi)
 | 
			
		||||
_PyEval_SliceIndex(PyObject *v, Py_ssize_t *pi)
 | 
			
		||||
{
 | 
			
		||||
	if (v != NULL) {
 | 
			
		||||
		long x;
 | 
			
		||||
| 
						 | 
				
			
			@ -3906,6 +3908,7 @@ _PyEval_SliceIndex(PyObject *v, int *pi)
 | 
			
		|||
			return 0;
 | 
			
		||||
		}
 | 
			
		||||
		/* Truncate -- very long indices are truncated anyway */
 | 
			
		||||
		/* XXX truncate by ssize maximum */
 | 
			
		||||
		if (x > INT_MAX)
 | 
			
		||||
			x = INT_MAX;
 | 
			
		||||
		else if (x < -INT_MAX)
 | 
			
		||||
| 
						 | 
				
			
			@ -3925,7 +3928,7 @@ apply_slice(PyObject *u, PyObject *v, PyObject *w) /* return u[v:w] */
 | 
			
		|||
	PySequenceMethods *sq = tp->tp_as_sequence;
 | 
			
		||||
 | 
			
		||||
	if (sq && sq->sq_slice && ISINT(v) && ISINT(w)) {
 | 
			
		||||
		int ilow = 0, ihigh = INT_MAX;
 | 
			
		||||
		Py_ssize_t ilow = 0, ihigh = INT_MAX;
 | 
			
		||||
		if (!_PyEval_SliceIndex(v, &ilow))
 | 
			
		||||
			return NULL;
 | 
			
		||||
		if (!_PyEval_SliceIndex(w, &ihigh))
 | 
			
		||||
| 
						 | 
				
			
			@ -3952,7 +3955,7 @@ assign_slice(PyObject *u, PyObject *v, PyObject *w, PyObject *x)
 | 
			
		|||
	PySequenceMethods *sq = tp->tp_as_sequence;
 | 
			
		||||
 | 
			
		||||
	if (sq && sq->sq_slice && ISINT(v) && ISINT(w)) {
 | 
			
		||||
		int ilow = 0, ihigh = INT_MAX;
 | 
			
		||||
		Py_ssize_t ilow = 0, ihigh = INT_MAX;
 | 
			
		||||
		if (!_PyEval_SliceIndex(v, &ilow))
 | 
			
		||||
			return -1;
 | 
			
		||||
		if (!_PyEval_SliceIndex(w, &ihigh))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue