瀏覽代碼

Fix temp_key being stale on key re-insert

See issue #992 and pull request #993.
Macoy Madson 4 年之前
父節點
當前提交
63e4ada98c
共有 1 個文件被更改,包括 2 次插入0 次删除
  1. 2 0
      stb_ds.h

+ 2 - 0
stb_ds.h

@@ -1378,6 +1378,8 @@ void *stbds_hmput_key(void *a, size_t elemsize, void *key, size_t keysize, int m
         if (bucket->hash[i] == hash) {
           if (stbds_is_key_equal(raw_a, elemsize, key, keysize, keyoffset, mode, bucket->index[i])) {
             stbds_temp(a) = bucket->index[i];
+            if (mode >= STBDS_HM_STRING)
+              stbds_temp_key(a) = * (char **) ((char *) raw_a + elemsize*bucket->index[i] + keyoffset);
             return STBDS_ARR_TO_HASH(a,elemsize);
           }
         } else if (bucket->hash[i] == 0) {