self.assertEqual(len(d), 1)
+ def test_split_table_update_with_str_subclass(self):
+ class MyStr(str): pass
+ class MyClass: pass
+ obj = MyClass()
+ obj.attr = 1
+ obj.__dict__[MyStr('attr')] = 2
+ self.assertEqual(obj.attr, 2)
+
class CAPITest(unittest.TestCase):
if (old_value != value) {
_PyDict_NotifyEvent(interp, PyDict_EVENT_MODIFIED, mp, key, value);
assert(old_value != NULL);
- assert(!_PyDict_HasSplitTable(mp));
if (DK_IS_UNICODE(mp->ma_keys)) {
- PyDictUnicodeEntry *ep = &DK_UNICODE_ENTRIES(mp->ma_keys)[ix];
- STORE_VALUE(ep, value);
+ if (_PyDict_HasSplitTable(mp)) {
+ STORE_SPLIT_VALUE(mp, ix, value);
+ }
+ else {
+ PyDictUnicodeEntry *ep = &DK_UNICODE_ENTRIES(mp->ma_keys)[ix];
+ STORE_VALUE(ep, value);
+ }
}
else {
PyDictKeyEntry *ep = &DK_ENTRIES(mp->ma_keys)[ix];