diff options
author | Karl Heuer <[email protected]> | 1994-11-15 21:44:10 +0000 |
---|---|---|
committer | Karl Heuer <[email protected]> | 1994-11-15 21:44:10 +0000 |
commit | 8548150755694d1f1bb587e10d6ebb446e829330 (patch) | |
tree | 9372c47c42deb171e9ffe57f8857759ac475063e /src | |
parent | 9c833060e3617af13f28c2affc2d61d6d7947b31 (diff) |
(free_float): Don't assume XFASTINT accesses the raw bits.
(make_float, free_cons, Fcons, Fmake_symbol, gc_sweep): Likewise.
Diffstat (limited to 'src')
-rw-r--r-- | src/alloc.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/alloc.c b/src/alloc.c index bd62b95fc5..fac718eb20 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -435,7 +435,7 @@ init_float () free_float (ptr) struct Lisp_Float *ptr; { - XSETFASTINT (ptr->type, (EMACS_INT) float_free_list); + *(struct Lisp_Float **)&ptr->type = float_free_list; float_free_list = ptr; } @@ -448,7 +448,7 @@ make_float (float_value) if (float_free_list) { XSETFLOAT (val, float_free_list); - float_free_list = (struct Lisp_Float *) XFASTINT (float_free_list->type); + float_free_list = *(struct Lisp_Float **)&float_free_list->type; } else { @@ -508,7 +508,7 @@ init_cons () free_cons (ptr) struct Lisp_Cons *ptr; { - XSETFASTINT (ptr->car, (EMACS_INT) cons_free_list); + *(struct Lisp_Cons **)&ptr->car = cons_free_list; cons_free_list = ptr; } @@ -522,7 +522,7 @@ DEFUN ("cons", Fcons, Scons, 2, 2, 0, if (cons_free_list) { XSETCONS (val, cons_free_list); - cons_free_list = (struct Lisp_Cons *) XFASTINT (cons_free_list->car); + cons_free_list = *(struct Lisp_Cons **)&cons_free_list->car; } else { @@ -708,8 +708,7 @@ Its value and function definition are void, and its property list is nil.") if (symbol_free_list) { XSETSYMBOL (val, symbol_free_list); - symbol_free_list - = (struct Lisp_Symbol *) XFASTINT (symbol_free_list->value); + symbol_free_list = *(struct Lisp_Symbol **)&symbol_free_list->value; } else { @@ -1788,8 +1787,8 @@ gc_sweep () for (i = 0; i < lim; i++) if (!XMARKBIT (cblk->conses[i].car)) { - XSETFASTINT (cblk->conses[i].car, (EMACS_INT) cons_free_list); num_free++; + *(struct Lisp_Cons **)&cblk->conses[i].car = cons_free_list; cons_free_list = &cblk->conses[i]; } else @@ -1818,8 +1817,8 @@ gc_sweep () for (i = 0; i < lim; i++) if (!XMARKBIT (fblk->floats[i].type)) { - XSETFASTINT (fblk->floats[i].type, (EMACS_INT) float_free_list); num_free++; + *(struct Lisp_Float **)&fblk->floats[i].type = float_free_list; float_free_list = &fblk->floats[i]; } else @@ -1882,7 +1881,7 @@ gc_sweep () for (i = 0; i < lim; i++) if (!XMARKBIT (sblk->symbols[i].plist)) { - XSETFASTINT (sblk->symbols[i].value, (EMACS_INT) symbol_free_list); + *(struct Lisp_Symbol **)&sblk->symbols[i].value = symbol_free_list; symbol_free_list = &sblk->symbols[i]; num_free++; } |