[2804] in BarnOwl Developers
[PATCH] Fixed minor bugs in variable.c
daemon@ATHENA.MIT.EDU (Jason Gross)
Sun Nov 21 21:53:29 2010
From: Jason Gross <jgross@MIT.EDU>
To: barnowl-dev@mit.edu
Date: Sun, 21 Nov 2010 21:53:25 -0500
Some functions previously ignored custom variable getters and used
v->val. Additionally, owl_variable_enum_get_tostring did not make
sure that v != NULL before using it.
---
variable.c | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/variable.c b/variable.c
index 10a3c9e..a763c64 100644
--- a/variable.c
+++ b/variable.c
@@ -694,7 +694,10 @@ int owl_variable_set_fromstring(owl_vardict *d, const char *name, const char *va
return -1;
}
if (msg && v->get_tostring_fn) {
- v->get_tostring_fn(v, buff2, 1024, v->val);
+ if (v->get_fn)
+ v->get_tostring_fn(v, buff2, 1024, v->get_fn(v));
+ else /* if there isn't a valid v->get_fn, fall back to v->val */
+ v->get_tostring_fn(v, buff2, 1024, v->val);
owl_function_makemsg("%s = '%s'", name, buff2);
}
return 0;
@@ -730,8 +733,11 @@ int owl_variable_get_tostring(const owl_vardict *d, const char *name, char *buf,
owl_variable *v;
if (!name) return(-1);
v = owl_dict_find_element(d, name);
- if (v == NULL || !v->get_tostring_fn) return(-1);
- return v->get_tostring_fn(v, buf, bufsize, v->val);
+ if (v == NULL || v->get_tostring_fn == NULL) return -1;
+ if (v->get_fn)
+ return v->get_tostring_fn(v, buf, bufsize, v->get_fn(v));
+ else /* fall back to v->val if there isn't a valid v->get_fn */
+ return v->get_tostring_fn(v, buf, bufsize, v->val);
}
int owl_variable_get_default_tostring(const owl_vardict *d, const char *name, char *buf, int bufsize) {
@@ -981,7 +987,7 @@ int owl_variable_enum_get_tostring(const owl_variable *v, char* buf, int bufsize
char **enums;
int nenums, i;
- if (val == NULL) {
+ if (val == NULL || v == NULL) {
snprintf(buf, bufsize, "<null>");
return -1;
}
--
1.7.1