[2804] in BarnOwl Developers

home help back first fref pref prev next nref lref last post

[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


home help back first fref pref prev next nref lref last post