diff options
author | Sebastien Helleu <flashcode@flashtux.org> | 2013-02-17 12:16:00 +0100 |
---|---|---|
committer | Sebastien Helleu <flashcode@flashtux.org> | 2013-02-17 12:16:00 +0100 |
commit | 6e3f6270d1af8863b9fa602732e83d6f139df8a8 (patch) | |
tree | 8ec68142d35ac771da3ab2f87403f9374dd82da4 | |
parent | 8b875cd4121acaf8edbefcb2730cd9b396af0b01 (diff) | |
download | weechat-6e3f6270d1af8863b9fa602732e83d6f139df8a8.zip |
core: allow read of array in hdata without using index
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | src/core/wee-hdata.c | 16 |
2 files changed, 10 insertions, 9 deletions
@@ -1,12 +1,13 @@ WeeChat ChangeLog ================= Sébastien Helleu <flashcode@flashtux.org> -v0.4.1-dev, 2013-02-16 +v0.4.1-dev, 2013-02-17 Version 0.4.1 (under dev!) -------------------------- +* core: allow read of array in hdata without using index * core: add option "dirs" for command /debug * core: fix detection of iconv with cmake on OS X (bug #38321) * core: add signal "window_opened" (task #12464) diff --git a/src/core/wee-hdata.c b/src/core/wee-hdata.c index 9e9800210..02dda08ca 100644 --- a/src/core/wee-hdata.c +++ b/src/core/wee-hdata.c @@ -475,7 +475,7 @@ hdata_get_index_and_name (const char *name, int *index, const char **ptr_name) long number; if (index) - *index = 0; + *index = -1; if (ptr_name) *ptr_name = name; @@ -520,7 +520,7 @@ hdata_char (struct t_hdata *hdata, void *pointer, const char *name) var = hashtable_get (hdata->hash_var, ptr_name); if (var && (var->offset >= 0)) { - if (var->array_size) + if (var->array_size && (index >= 0)) { if (*((void **)(pointer + var->offset))) return (*((char **)(pointer + var->offset)))[index]; @@ -550,7 +550,7 @@ hdata_integer (struct t_hdata *hdata, void *pointer, const char *name) var = hashtable_get (hdata->hash_var, ptr_name); if (var && (var->offset >= 0)) { - if (var->array_size) + if (var->array_size && (index >= 0)) { if (*((void **)(pointer + var->offset))) return ((int *)(pointer + var->offset))[index]; @@ -580,7 +580,7 @@ hdata_long (struct t_hdata *hdata, void *pointer, const char *name) var = hashtable_get (hdata->hash_var, ptr_name); if (var && (var->offset >= 0)) { - if (var->array_size) + if (var->array_size && (index >= 0)) { if (*((void **)(pointer + var->offset))) return ((long *)(pointer + var->offset))[index]; @@ -610,7 +610,7 @@ hdata_string (struct t_hdata *hdata, void *pointer, const char *name) var = hashtable_get (hdata->hash_var, ptr_name); if (var && (var->offset >= 0)) { - if (var->array_size) + if (var->array_size && (index >= 0)) { if (*((void **)(pointer + var->offset))) return (*((char ***)(pointer + var->offset)))[index]; @@ -640,7 +640,7 @@ hdata_pointer (struct t_hdata *hdata, void *pointer, const char *name) var = hashtable_get (hdata->hash_var, ptr_name); if (var && (var->offset >= 0)) { - if (var->array_size) + if (var->array_size && (index >= 0)) { if (*((void **)(pointer + var->offset))) return (*((void ***)(pointer + var->offset)))[index]; @@ -670,7 +670,7 @@ hdata_time (struct t_hdata *hdata, void *pointer, const char *name) var = hashtable_get (hdata->hash_var, ptr_name); if (var && (var->offset >= 0)) { - if (var->array_size) + if (var->array_size && (index >= 0)) { if (*((void **)(pointer + var->offset))) return ((time_t *)(pointer + var->offset))[index]; @@ -700,7 +700,7 @@ hdata_hashtable (struct t_hdata *hdata, void *pointer, const char *name) var = hashtable_get (hdata->hash_var, ptr_name); if (var && (var->offset >= 0)) { - if (var->array_size) + if (var->array_size && (index >= 0)) { if (*((void **)(pointer + var->offset))) return (*((struct t_hashtable ***)(pointer + var->offset)))[index]; |