mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-28 16:21:07 -08:00
* 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.
This commit is contained in:
parent
4230ab74b7
commit
f601cdf35d
5 changed files with 25 additions and 11 deletions
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -2643,7 +2643,7 @@ make_float (float_value)
|
|||
|
||||
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 @@ make_pure_float (num)
|
|||
|
||||
p = (struct Lisp_Float *) pure_alloc (sizeof *p, Lisp_Float);
|
||||
XSETFLOAT (new, p);
|
||||
XFLOAT_DATA (new) = num;
|
||||
XFLOAT_INIT (new, num);
|
||||
return new;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -475,11 +475,13 @@ xd_append_arg (dtype, object, iter)
|
|||
}
|
||||
|
||||
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:
|
||||
|
|
|
|||
|
|
@ -4604,8 +4604,9 @@ sxhash (obj, depth)
|
|||
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -1377,9 +1377,12 @@ struct Lisp_Float
|
|||
};
|
||||
|
||||
#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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue