1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-04 16:53:14 +02:00

core: allow read of array in hdata without using index

This commit is contained in:
Sebastien Helleu
2013-02-17 12:16:00 +01:00
parent 8b875cd412
commit 6e3f6270d1
2 changed files with 10 additions and 9 deletions
+2 -1
View File
@@ -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)
+8 -8
View File
@@ -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];