# HG changeset patch # User Ken Raeburn # Date 1250472354 0 # Node ID 73f76307d49b3f601882c6f9ac99afbb899ea155 # Parent c8e168f901e777ea822b2003a5983d9f735a3118 * lisp.h (XFLOAT_DATA): Produce an rvalue by adding 0 to the value. (XFLOAT_INIT): New macro for storing a float value. * alloc.c (make_float, make_pure_float): Use XFLOAT_INIT. * fns.c (sxhash): Copy out the value of a float in order to examine its bytes. * dbusbind.c (xd_append_arg): Likewise. diff -r c8e168f901e7 -r 73f76307d49b src/ChangeLog --- a/src/ChangeLog Mon Aug 17 00:48:14 2009 +0000 +++ b/src/ChangeLog Mon Aug 17 01:25:54 2009 +0000 @@ -1,5 +1,13 @@ 2009-08-17 Ken Raeburn + * lisp.h (XFLOAT_DATA): Produce an rvalue by adding 0 to the + value. + (XFLOAT_INIT): New macro for storing a float value. + * alloc.c (make_float, make_pure_float): Use XFLOAT_INIT. + * fns.c (sxhash): Copy out the value of a float in order to + examine its bytes. + * dbusbind.c (xd_append_arg): Likewise. + * emacs.c (main): Don't call syms_of_data twice. 2009-08-16 Michael Albinus diff -r c8e168f901e7 -r 73f76307d49b src/alloc.c --- a/src/alloc.c Mon Aug 17 00:48:14 2009 +0000 +++ b/src/alloc.c Mon Aug 17 01:25:54 2009 +0000 @@ -2643,7 +2643,7 @@ MALLOC_UNBLOCK_INPUT; - XFLOAT_DATA (val) = float_value; + XFLOAT_INIT (val, float_value); eassert (!FLOAT_MARKED_P (XFLOAT (val))); consing_since_gc += sizeof (struct Lisp_Float); floats_consed++; @@ -4850,7 +4850,7 @@ p = (struct Lisp_Float *) pure_alloc (sizeof *p, Lisp_Float); XSETFLOAT (new, p); - XFLOAT_DATA (new) = num; + XFLOAT_INIT (new, num); return new; } diff -r c8e168f901e7 -r 73f76307d49b src/dbusbind.c --- a/src/dbusbind.c Mon Aug 17 00:48:14 2009 +0000 +++ b/src/dbusbind.c Mon Aug 17 01:25:54 2009 +0000 @@ -475,11 +475,13 @@ } case DBUS_TYPE_DOUBLE: - XD_DEBUG_MESSAGE ("%c %f", dtype, XFLOAT_DATA (object)); - if (!dbus_message_iter_append_basic (iter, dtype, - &XFLOAT_DATA (object))) - XD_SIGNAL2 (build_string ("Unable to append argument"), object); - return; + { + double val = XFLOAT_DATA (object); + XD_DEBUG_MESSAGE ("%c %f", dtype, val); + if (!dbus_message_iter_append_basic (iter, dtype, &val)) + XD_SIGNAL2 (build_string ("Unable to append argument"), object); + return; + } case DBUS_TYPE_STRING: case DBUS_TYPE_OBJECT_PATH: diff -r c8e168f901e7 -r 73f76307d49b src/fns.c --- a/src/fns.c Mon Aug 17 00:48:14 2009 +0000 +++ b/src/fns.c Mon Aug 17 01:25:54 2009 +0000 @@ -4604,8 +4604,9 @@ case Lisp_Float: { - unsigned char *p = (unsigned char *) &XFLOAT_DATA (obj); - unsigned char *e = p + sizeof XFLOAT_DATA (obj); + double val = XFLOAT_DATA (obj); + unsigned char *p = (unsigned char *) &val; + unsigned char *e = p + sizeof val; for (hash = 0; p < e; ++p) hash = SXHASH_COMBINE (hash, *p); break; diff -r c8e168f901e7 -r 73f76307d49b src/lisp.h --- a/src/lisp.h Mon Aug 17 00:48:14 2009 +0000 +++ b/src/lisp.h Mon Aug 17 01:25:54 2009 +0000 @@ -1377,9 +1377,12 @@ }; #ifdef HIDE_LISP_IMPLEMENTATION -#define XFLOAT_DATA(f) (XFLOAT (f)->u.data_) +#define XFLOAT_DATA(f) (XFLOAT (f)->u.data_ + 0) #else -#define XFLOAT_DATA(f) (XFLOAT (f)->u.data) +#define XFLOAT_DATA(f) (XFLOAT (f)->u.data + 0) +/* This should be used only in alloc.c, which always disables + HIDE_LISP_IMPLEMENTATION. */ +#define XFLOAT_INIT(f,n) (XFLOAT (f)->u.data = (n)) #endif /* A character, declared with the following typedef, is a member