- GROW(trie->keys, 1, trie->keys_len, trie->keys_size);
- trie->keys[trie->keys_len++] = strdup(key);
+
+ int len = m_strlen(key) + 1;
+ GROW(trie->keys, len, trie->keys_len, trie->keys_size);
+ memcpy(trie->keys + trie->keys_len, key, len);
+
+ GROW(trie->keys_offset, 1, trie->keys_offset_len, trie->keys_offset_size);
+ trie->keys_offset[trie->keys_offset_len++] = trie->keys_len;
+ trie->keys_len += len;