diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2016-09-08 18:35:46 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2016-09-08 18:35:46 (GMT) |
commit | 208857ec337ecc065fa0c72bad56ffdf483fe2ae (patch) | |
tree | 162dd2f53365e24532f4f29e3de6c3cad587f457 | |
parent | b6e363463a4a58be273af37c6f1e7e2e60c8c00a (diff) | |
download | cpython-208857ec337ecc065fa0c72bad56ffdf483fe2ae.zip cpython-208857ec337ecc065fa0c72bad56ffdf483fe2ae.tar.gz cpython-208857ec337ecc065fa0c72bad56ffdf483fe2ae.tar.bz2 |
dk_get_index/dk_set_index uses a type indices variable
Issue #27350.
-rw-r--r-- | Objects/dictobject.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/Objects/dictobject.c b/Objects/dictobject.c index cd25803..ff285bd 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -307,18 +307,22 @@ dk_get_index(PyDictKeysObject *keys, Py_ssize_t i) Py_ssize_t ix; if (s <= 0xff) { - ix = ((char*) &keys->dk_indices[0])[i]; + char *indices = (char*)keys->dk_indices; + ix = indices[i]; } else if (s <= 0xffff) { - ix = ((int16_t*)&keys->dk_indices[0])[i]; + int16_t *indices = (int16_t*)keys->dk_indices; + ix = indices[i]; } #if SIZEOF_VOID_P > 4 else if (s <= 0xffffffff) { - ix = ((int32_t*)&keys->dk_indices[0])[i]; + int32_t *indices = (int32_t*)keys->dk_indices; + ix = indices[i]; } #endif else { - ix = ((Py_ssize_t*)&keys->dk_indices[0])[i]; + Py_ssize_t *indices = (Py_ssize_t*)keys->dk_indices; + ix = indices[i]; } assert(ix >= DKIX_DUMMY); return ix; @@ -333,21 +337,25 @@ dk_set_index(PyDictKeysObject *keys, Py_ssize_t i, Py_ssize_t ix) assert(ix >= DKIX_DUMMY); if (s <= 0xff) { + char *indices = (char*)keys->dk_indices; assert(ix <= 0x7f); - ((char*) &keys->dk_indices[0])[i] = (char)ix; + indices[i] = (char)ix; } else if (s <= 0xffff) { + int16_t *indices = (int16_t*)keys->dk_indices; assert(ix <= 0x7fff); - ((int16_t*) &keys->dk_indices[0])[i] = (int16_t)ix; + indices[i] = (int16_t)ix; } #if SIZEOF_VOID_P > 4 else if (s <= 0xffffffff) { + int32_t *indices = (int32_t*)keys->dk_indices; assert(ix <= 0x7fffffff); - ((int32_t*) &keys->dk_indices[0])[i] = (int32_t)ix; + indices[i] = (int32_t)ix; } #endif else { - ((Py_ssize_t*) &keys->dk_indices[0])[i] = ix; + Py_ssize_t *indices = (Py_ssize_t*)keys->dk_indices; + indices[i] = ix; } } |