On Tue, 4 Jan 2005, Derrick J Brashear wrote:

--- lib/imapopts.h.orig Fri Dec 31 10:19:47 2004
+++ lib/imapopts.h      Fri Dec 31 10:20:13 2004
@@ -200,9 +200,9 @@

       const char *s;

-       int i;
+       long i;

-       int b;
+       long b;

       enum enum_value e;


given that e.g. config_getint returns int, still, this isn't really the right fix. i willhave one shortly.

Or not. I need to think some more. See, the thing is: union config_value { void *dummy; const char *s; int i; int b; enum enum_value e; };

and so the thing we use when we initialize from an array is treated as of the first union type, a void*, or, on a 64 bit big endian platform, something which results in us being screwed when we read an int out. simply converting i and b to longs will fix the issue, but means carelessness may cause a truncation later from e.g. config_getint. So I'm stuck either switching to config functions which return longs (and associated code changes), fixing this some other way, or just sucking it up and switching i and b to long, and taking the risk.

I need to think some more.

---
Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

Reply via email to