diff options
Diffstat (limited to 'src/fileio.c')
| -rw-r--r-- | src/fileio.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/src/fileio.c b/src/fileio.c index a91bdaa53d1..66b23333172 100644 --- a/src/fileio.c +++ b/src/fileio.c | |||
| @@ -3424,17 +3424,13 @@ read_non_regular_quit (Lisp_Object ignore) | |||
| 3424 | static off_t | 3424 | static off_t |
| 3425 | file_offset (Lisp_Object val) | 3425 | file_offset (Lisp_Object val) |
| 3426 | { | 3426 | { |
| 3427 | if (RANGED_FIXNUMP (0, val, TYPE_MAXIMUM (off_t))) | 3427 | if (INTEGERP (val)) |
| 3428 | return XFIXNUM (val); | ||
| 3429 | |||
| 3430 | if (BIGNUMP (val)) | ||
| 3431 | { | 3428 | { |
| 3432 | intmax_t v = bignum_to_intmax (val); | 3429 | intmax_t v; |
| 3433 | if (0 < v && v <= TYPE_MAXIMUM (off_t)) | 3430 | if (integer_to_intmax (val, &v) && 0 <= v && v <= TYPE_MAXIMUM (off_t)) |
| 3434 | return v; | 3431 | return v; |
| 3435 | } | 3432 | } |
| 3436 | 3433 | else if (FLOATP (val)) | |
| 3437 | if (FLOATP (val)) | ||
| 3438 | { | 3434 | { |
| 3439 | double v = XFLOAT_DATA (val); | 3435 | double v = XFLOAT_DATA (val); |
| 3440 | if (0 <= v && v < 1.0 + TYPE_MAXIMUM (off_t)) | 3436 | if (0 <= v && v < 1.0 + TYPE_MAXIMUM (off_t)) |