Fix assertion-violations on non-integers

These bugs were introduced after bignums were added.
* src/data.c (cons_to_unsigned, cons_to_signed):
* src/xdisp.c (calc_line_height_property):
Invoke integer_to_intmax and integer_to_uintmax only on integers.
This commit is contained in:
Paul Eggert 2018-12-30 19:00:09 -08:00
parent 433b6a74ec
commit bed56428a6
2 changed files with 3 additions and 3 deletions

View file

@ -2655,7 +2655,7 @@ cons_to_unsigned (Lisp_Object c, uintmax_t max)
else
{
Lisp_Object hi = CONSP (c) ? XCAR (c) : c;
valid = integer_to_uintmax (hi, &val);
valid = INTEGERP (hi) && integer_to_uintmax (hi, &val);
if (valid && CONSP (c))
{
@ -2716,7 +2716,7 @@ cons_to_signed (Lisp_Object c, intmax_t min, intmax_t max)
else
{
Lisp_Object hi = CONSP (c) ? XCAR (c) : c;
valid = integer_to_intmax (hi, &val);
valid = INTEGERP (hi) && integer_to_intmax (hi, &val);
if (valid && CONSP (c))
{

View file

@ -27991,7 +27991,7 @@ calc_line_height_property (struct it *it, Lisp_Object val, struct font *font,
/* FIXME: Check for overflow in multiplication or conversion. */
if (FLOATP (val))
height = (int)(XFLOAT_DATA (val) * height);
else
else if (INTEGERP (val))
{
intmax_t v;
if (integer_to_intmax (val, &v))