diff --git a/ChangeLog b/ChangeLog index ae770d829..9a3a8c2eb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21,6 +21,7 @@ Version 0.4.3 (under dev!) * core: fix truncated prefix when filters are toggled (bug #40204) * core: add options to customize default text search in buffers: weechat.look.buffer_search_{case_sensitive|force_default|regex|where} +* api: fix read of arrays in hdata functions hdata_ (bug #40354) * irc: fix auto-switch to channel buffer when doing /join channel (without "#") * irc: add option irc.look.notice_welcome_tags * irc: add server option "default_msg_kick" to customize default kick/kickban diff --git a/src/core/wee-hdata.c b/src/core/wee-hdata.c index 4ea345e39..00694e05f 100644 --- a/src/core/wee-hdata.c +++ b/src/core/wee-hdata.c @@ -601,10 +601,7 @@ hdata_char (struct t_hdata *hdata, void *pointer, const char *name) if (var && (var->offset >= 0)) { if (var->array_size && (index >= 0)) - { - if (*((void **)(pointer + var->offset))) - return (*((char **)(pointer + var->offset)))[index]; - } + return (*((char **)(pointer + var->offset)))[index]; else return *((char *)(pointer + var->offset)); } @@ -631,10 +628,7 @@ hdata_integer (struct t_hdata *hdata, void *pointer, const char *name) if (var && (var->offset >= 0)) { if (var->array_size && (index >= 0)) - { - if (*((void **)(pointer + var->offset))) - return ((int *)(pointer + var->offset))[index]; - } + return ((int *)(pointer + var->offset))[index]; else return *((int *)(pointer + var->offset)); } @@ -661,10 +655,7 @@ hdata_long (struct t_hdata *hdata, void *pointer, const char *name) if (var && (var->offset >= 0)) { if (var->array_size && (index >= 0)) - { - if (*((void **)(pointer + var->offset))) - return ((long *)(pointer + var->offset))[index]; - } + return ((long *)(pointer + var->offset))[index]; else return *((long *)(pointer + var->offset)); } @@ -691,10 +682,7 @@ hdata_string (struct t_hdata *hdata, void *pointer, const char *name) if (var && (var->offset >= 0)) { if (var->array_size && (index >= 0)) - { - if (*((void **)(pointer + var->offset))) - return (*((char ***)(pointer + var->offset)))[index]; - } + return (*((char ***)(pointer + var->offset)))[index]; else return *((char **)(pointer + var->offset)); } @@ -721,10 +709,7 @@ hdata_pointer (struct t_hdata *hdata, void *pointer, const char *name) if (var && (var->offset >= 0)) { if (var->array_size && (index >= 0)) - { - if (*((void **)(pointer + var->offset))) - return (*((void ***)(pointer + var->offset)))[index]; - } + return (*((void ***)(pointer + var->offset)))[index]; else return *((void **)(pointer + var->offset)); } @@ -751,10 +736,7 @@ hdata_time (struct t_hdata *hdata, void *pointer, const char *name) if (var && (var->offset >= 0)) { if (var->array_size && (index >= 0)) - { - if (*((void **)(pointer + var->offset))) - return ((time_t *)(pointer + var->offset))[index]; - } + return ((time_t *)(pointer + var->offset))[index]; else return *((time_t *)(pointer + var->offset)); } @@ -781,10 +763,7 @@ hdata_hashtable (struct t_hdata *hdata, void *pointer, const char *name) if (var && (var->offset >= 0)) { if (var->array_size && (index >= 0)) - { - if (*((void **)(pointer + var->offset))) - return (*((struct t_hashtable ***)(pointer + var->offset)))[index]; - } + return (*((struct t_hashtable ***)(pointer + var->offset)))[index]; else return *((struct t_hashtable **)(pointer + var->offset)); }