A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
Modified tesh files.
[simgrid.git]
/
src
/
xbt
/
dict_elm.c
diff --git
a/src/xbt/dict_elm.c
b/src/xbt/dict_elm.c
index
2284403
..
91d245e
100644
(file)
--- a/
src/xbt/dict_elm.c
+++ b/
src/xbt/dict_elm.c
@@
-31,8
+31,9
@@
xbt_dictelm_t xbt_dictelm_new(const char *key,
{
xbt_dictelm_t element = xbt_mallocator_get(dict_elm_mallocator);
+ element->dictielem = 0; /* please free the key on free */
element->key = xbt_new(char, key_len + 1);
-
strncpy(element->key,
key, key_len);
+
memcpy((void *)element->key, (void *)
key, key_len);
element->key[key_len] = '\0';
element->key_len = key_len;
@@
-45,10
+46,27
@@
xbt_dictelm_t xbt_dictelm_new(const char *key,
return element;
}
+xbt_dictelm_t xbt_dictielm_new(uintptr_t key, unsigned int hash_code, uintptr_t content) {
+ xbt_dictelm_t element = xbt_mallocator_get(dict_elm_mallocator);
+
+ element->key = (void*)key;
+
+ element->dictielem = 1; /* please DONT free the key on free */
+ element->key_len = sizeof(uintptr_t);
+ element->hash_code = hash_code;
+
+ element->content = (void*)content;
+ element->free_f = NULL;
+ element->next = NULL;
+
+ return element;
+}
+
void xbt_dictelm_free(xbt_dictelm_t element)
{
if (element != NULL) {
- xbt_free(element->key);
+ if (!element->dictielem)
+ xbt_free(element->key);
if (element->free_f != NULL && element->content != NULL) {
element->free_f(element->content);