mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	bpo-40052: Fix alignment issue in PyVectorcall_Function() (GH-23999)
```
In file included from /usr/include/python3.8/Python.h:147:
In file included from /usr/include/python3.8/abstract.h:837:
/usr/include/python3.8/cpython/abstract.h:91:11: error: cast from 'char *' to 'vectorcallfunc *'
(aka 'struct _object *(**)(struct _object *, struct _object *const *, unsigned long, struct _object *)')
increases required alignment from 1 to 8 [-Werror,-Wcast-align]
    ptr = (vectorcallfunc*)(((char *)callable) + offset);
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
```
Co-Authored-By: Andreas Schneider <asn@cryptomilk.org>
Co-Authored-By: Antoine Pitrou <antoine@python.org>
			
			
This commit is contained in:
		
							parent
							
								
									2edfc86f69
								
							
						
					
					
						commit
						056c08211b
					
				
					 3 changed files with 7 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -63,7 +63,7 @@ PyVectorcall_Function(PyObject *callable)
 | 
			
		|||
{
 | 
			
		||||
    PyTypeObject *tp;
 | 
			
		||||
    Py_ssize_t offset;
 | 
			
		||||
    vectorcallfunc *ptr;
 | 
			
		||||
    vectorcallfunc ptr;
 | 
			
		||||
 | 
			
		||||
    assert(callable != NULL);
 | 
			
		||||
    tp = Py_TYPE(callable);
 | 
			
		||||
| 
						 | 
				
			
			@ -73,8 +73,8 @@ PyVectorcall_Function(PyObject *callable)
 | 
			
		|||
    assert(PyCallable_Check(callable));
 | 
			
		||||
    offset = tp->tp_vectorcall_offset;
 | 
			
		||||
    assert(offset > 0);
 | 
			
		||||
    ptr = (vectorcallfunc *)(((char *)callable) + offset);
 | 
			
		||||
    return *ptr;
 | 
			
		||||
    memcpy(&ptr, (char *) callable + offset, sizeof(ptr));
 | 
			
		||||
    return ptr;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Call the callable object 'callable' with the "vectorcall" calling
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue