ctypes: subclassed swapped endianness doesn't swap
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia riproducendo l’esempio minimo di ctypes usando c_ushort.ctype_be e una sottoclasse, quindi confronta il comportamento di from_buffer_copy del tipo base con byte scambiati e della sottoclasse. Traccia la gestione da parte di ctypes dei tipi semplici con byte scambiati e determina in che modo differisce il percorso della sottoclasse; il lavoro è completato quando la sottoclasse produce lo stesso valore con i byte scambiati del tipo base e la regressione è coperta da un test.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug report
Subclassing a swapped simple type and calling from_buffer_copy doesn't swap bytes. Here is a minimal non-working example.
import ctypes
cshort_be = ctypes.c_ushort.__ctype_be__
class Short(cshort_be):
pass
print(cshort_be.from_buffer_copy(b"\x00\x01").value) # prints 1
print(Short.from_buffer_copy(b"\x00\x01").value) # prints 256
However, there is a simple workaround:
print(Short.__ctype_be__.from_buffer_copy(b"\x00\x01").value) # prints 1
I am not sure what happens, but ctypes behave kinda weird when subclassing native types. So this bug might be related to issue #73456.
My environment
- CPython versions tested on: 3.10.5
- Operating system and architecture:
Linux Celap 5.18.0-1-amd64 #1 SMP PREEMPT_DYNAMIC Debian 5.18.2-1 (2022-06-06) x86_64 GNU/Linux
- Lingua principale
- Python
- Stelle
- 77.2k
- Fork
- 36k
- Merge medio
- 1g 9h
- PR unite (30g)
- 558
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di python/cpython
-
docs pending
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
stdlib type-feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
stdlib type-feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
build type-bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
stdlib topic-email type-feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
Tutte le issue di python/cpython
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
-
🐛 Bug 🔔 Pending processing
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
jumpserver/jumpserver#17584 ·