From ce295301fc35b85d01d503195bc04678a3737f7f Mon Sep 17 00:00:00 2001 From: BLUELOVETH Date: Mon, 7 Aug 2023 21:40:52 +0800 Subject: [PATCH] fix a bug of `dict` orders --- src/dict.cpp | 13 +++++++++---- tests/07_dict.py | 10 +++++++++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/dict.cpp b/src/dict.cpp index de71e33d..905c0209 100644 --- a/src/dict.cpp +++ b/src/dict.cpp @@ -63,24 +63,29 @@ namespace pkpy{ void Dict::_rehash(){ Item* old_items = _items; - int old_capacity = _capacity; + ItemNode* old_nodes = _nodes; + int old_head_idx = _head_idx; + _capacity *= 2; _mask = _capacity - 1; _size = 0; _critical_size = _capacity*__LoadFactor+0.5f; _head_idx = -1; _tail_idx = -1; - pool64.dealloc(_nodes); + _items = (Item*)pool128.alloc(_capacity * sizeof(Item)); memset(_items, 0, _capacity * sizeof(Item)); _nodes = (ItemNode*)pool64.alloc(_capacity * sizeof(ItemNode)); memset(_nodes, -1, _capacity * sizeof(ItemNode)); - for(int i=0; i