mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	 470a0a68eb
			
		
	
	
		470a0a68eb
		
			
		
	
	
	
	
		
			
			Change PyTuple_FromStackRefSteal and PyList_FromStackRefSteal to only steal on success to avoid escaping
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			923 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			923 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef Py_INTERNAL_TUPLE_H
 | |
| #define Py_INTERNAL_TUPLE_H
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #ifndef Py_BUILD_CORE
 | |
| #  error "this header requires Py_BUILD_CORE define"
 | |
| #endif
 | |
| 
 | |
| extern void _PyTuple_MaybeUntrack(PyObject *);
 | |
| extern void _PyTuple_DebugMallocStats(FILE *out);
 | |
| 
 | |
| /* runtime lifecycle */
 | |
| 
 | |
| extern PyStatus _PyTuple_InitGlobalObjects(PyInterpreterState *);
 | |
| 
 | |
| 
 | |
| /* other API */
 | |
| 
 | |
| #define _PyTuple_ITEMS(op) _Py_RVALUE(_PyTuple_CAST(op)->ob_item)
 | |
| 
 | |
| PyAPI_FUNC(PyObject *)_PyTuple_FromArray(PyObject *const *, Py_ssize_t);
 | |
| PyAPI_FUNC(PyObject *)_PyTuple_FromStackRefStealOnSuccess(const union _PyStackRef *, Py_ssize_t);
 | |
| PyAPI_FUNC(PyObject *)_PyTuple_FromArraySteal(PyObject *const *, Py_ssize_t);
 | |
| 
 | |
| typedef struct {
 | |
|     PyObject_HEAD
 | |
|     Py_ssize_t it_index;
 | |
|     PyTupleObject *it_seq; /* Set to NULL when iterator is exhausted */
 | |
| } _PyTupleIterObject;
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| #endif   /* !Py_INTERNAL_TUPLE_H */
 |