Mercurial > emacs
changeset 104313:73f76307d49b
* 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.
author | Ken Raeburn <raeburn@raeburn.org> |
---|---|
date | Mon, 17 Aug 2009 01:25:54 +0000 |
parents | c8e168f901e7 |
children | b9b60c07064d |
files | src/ChangeLog src/alloc.c src/dbusbind.c src/fns.c src/lisp.h |
diffstat | 5 files changed, 25 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- 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 <raeburn@raeburn.org> + * 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 <michael.albinus@gmx.de>
--- 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; }
--- 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:
--- 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;
--- 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