summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2013-02-17 12:16:00 +0100
committerSebastien Helleu <flashcode@flashtux.org>2013-02-17 12:16:00 +0100
commit6e3f6270d1af8863b9fa602732e83d6f139df8a8 (patch)
tree8ec68142d35ac771da3ab2f87403f9374dd82da4
parent8b875cd4121acaf8edbefcb2730cd9b396af0b01 (diff)
downloadweechat-6e3f6270d1af8863b9fa602732e83d6f139df8a8.zip
core: allow read of array in hdata without using index
-rw-r--r--ChangeLog3
-rw-r--r--src/core/wee-hdata.c16
2 files changed, 10 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index a1faf6884..bd980cdf2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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];