summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2016-09-08 18:35:46 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2016-09-08 18:35:46 (GMT)
commit208857ec337ecc065fa0c72bad56ffdf483fe2ae (patch)
tree162dd2f53365e24532f4f29e3de6c3cad587f457
parentb6e363463a4a58be273af37c6f1e7e2e60c8c00a (diff)
downloadcpython-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.c24
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;
}
}