py: Correctly set sys.maxsize value for 64-bit.
Type representing signed size doesn't have to be int, so use special value which defaults to SSIZE_MAX, but as it's not defined by C standard (but rather by POSIX), allow ports to set it.
This commit is contained in:
parent
17598d49e1
commit
722e562736
@ -448,6 +448,10 @@ typedef double mp_float_t;
|
||||
#define MP_PLAT_FREE_EXEC(ptr, size) m_del(byte, ptr, size)
|
||||
#endif
|
||||
|
||||
#ifndef MP_SSIZE_MAX
|
||||
#define MP_SSIZE_MAX SSIZE_MAX
|
||||
#endif
|
||||
|
||||
// printf format spec to use for mp_int_t and friends
|
||||
#ifndef INT_FMT
|
||||
#ifdef __LP64__
|
||||
|
@ -52,7 +52,7 @@
|
||||
|
||||
#if MICROPY_PY_SYS_MAXSIZE
|
||||
// Export value for sys.maxsize
|
||||
const mp_obj_int_t mp_maxsize_obj = {{&mp_type_int}, INT_MAX};
|
||||
const mp_obj_int_t mp_maxsize_obj = {{&mp_type_int}, MP_SSIZE_MAX};
|
||||
#endif
|
||||
|
||||
mp_int_t mp_obj_int_hash(mp_obj_t self_in) {
|
||||
|
@ -47,14 +47,14 @@
|
||||
// Export value for sys.maxsize
|
||||
#define DIG_MASK ((1L << MPZ_DIG_SIZE) - 1)
|
||||
STATIC const mpz_dig_t maxsize_dig[MPZ_NUM_DIG_FOR_INT] = {
|
||||
(INT_MAX >> MPZ_DIG_SIZE * 0) & DIG_MASK,
|
||||
#if (INT_MAX >> MPZ_DIG_SIZE * 0) > DIG_MASK
|
||||
(INT_MAX >> MPZ_DIG_SIZE * 1) & DIG_MASK,
|
||||
#if (INT_MAX >> MPZ_DIG_SIZE * 1) > DIG_MASK
|
||||
(INT_MAX >> MPZ_DIG_SIZE * 2) & DIG_MASK,
|
||||
(INT_MAX >> MPZ_DIG_SIZE * 3) & DIG_MASK,
|
||||
(INT_MAX >> MPZ_DIG_SIZE * 4) & DIG_MASK,
|
||||
// (INT_MAX >> MPZ_DIG_SIZE * 5) & DIG_MASK,
|
||||
(MP_SSIZE_MAX >> MPZ_DIG_SIZE * 0) & DIG_MASK,
|
||||
#if (MP_SSIZE_MAX >> MPZ_DIG_SIZE * 0) > DIG_MASK
|
||||
(MP_SSIZE_MAX >> MPZ_DIG_SIZE * 1) & DIG_MASK,
|
||||
#if (MP_SSIZE_MAX >> MPZ_DIG_SIZE * 1) > DIG_MASK
|
||||
(MP_SSIZE_MAX >> MPZ_DIG_SIZE * 2) & DIG_MASK,
|
||||
(MP_SSIZE_MAX >> MPZ_DIG_SIZE * 3) & DIG_MASK,
|
||||
(MP_SSIZE_MAX >> MPZ_DIG_SIZE * 4) & DIG_MASK,
|
||||
// (MP_SSIZE_MAX >> MPZ_DIG_SIZE * 5) & DIG_MASK,
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user