--- libsrc/Wi/col.h.orig 2023-06-07 19:59:13.000000000 +0800 +++ libsrc/Wi/col.h 2025-09-08 16:20:45.000000000 +0800 @@ -617,13 +617,49 @@ #ifdef WORDS_BIGENDIAN -#define SHORT_SET_CA(p, w) SHORT_SET_NA(p, w) -#define LONG_SET_CA(p, w) LONG_SET_NA(p, w) -#define INT64_SET_CA(p, w) INT64_SET_NA(p, w) - -#define SHORT_REF_CA(p) SHORT_REF_NA(p) -#define LONG_REF_CA(p) LONG_REF_NA(p) -#define INT64_REF_CA(p) INT64_REF_NA(p) +#define SHORT_SET_CA(p, w) \ + do { \ + ((unsigned char *)(p))[0] = (unsigned char)((w) & 0xFF); \ + ((unsigned char *)(p))[1] = (unsigned char)(((w) >> 8) & 0xFF); \ + } while (0) + +#define LONG_SET_CA(p, w) \ + do { \ + ((unsigned char *)(p))[0] = (unsigned char)((w) & 0xFF); \ + ((unsigned char *)(p))[1] = (unsigned char)(((w) >> 8) & 0xFF); \ + ((unsigned char *)(p))[2] = (unsigned char)(((w) >> 16) & 0xFF); \ + ((unsigned char *)(p))[3] = (unsigned char)(((w) >> 24) & 0xFF); \ + } while (0) + +#define INT64_SET_CA(p, w) \ + do { \ + ((unsigned char *)(p))[0] = (unsigned char)((w) & 0xFF); \ + ((unsigned char *)(p))[1] = (unsigned char)(((w) >> 8) & 0xFF); \ + ((unsigned char *)(p))[2] = (unsigned char)(((w) >> 16) & 0xFF); \ + ((unsigned char *)(p))[3] = (unsigned char)(((w) >> 24) & 0xFF); \ + ((unsigned char *)(p))[4] = (unsigned char)(((w) >> 32) & 0xFF); \ + ((unsigned char *)(p))[5] = (unsigned char)(((w) >> 40) & 0xFF); \ + ((unsigned char *)(p))[6] = (unsigned char)(((w) >> 48) & 0xFF); \ + ((unsigned char *)(p))[7] = (unsigned char)(((w) >> 56) & 0xFF); \ + } while (0) + +#define SHORT_REF_CA(p) \ + ((unsigned short)(((unsigned char *)(p))[0] | ((unsigned char *)(p))[1] << 8)) + +#define LONG_REF_CA(p) \ + ((int32)(((unsigned char *)(p))[0] | ((unsigned char *)(p))[1] << 8 | ((unsigned char *)(p))[2] << 16 | ((unsigned char *)(p))[3] << 24)) + +#define INT64_REF_CA(p) \ + ((int64)( \ + ((uint64)((unsigned char *)(p))[0]) | \ + ((uint64)((unsigned char *)(p))[1] << 8) | \ + ((uint64)((unsigned char *)(p))[2] << 16) | \ + ((uint64)((unsigned char *)(p))[3] << 24) | \ + ((uint64)((unsigned char *)(p))[4] << 32) | \ + ((uint64)((unsigned char *)(p))[5] << 40) | \ + ((uint64)((unsigned char *)(p))[6] << 48) | \ + ((uint64)((unsigned char *)(p))[7] << 56) \ + )) #else @@ -771,22 +807,12 @@ void itc_set_sp_stat (it_cursor_t * itc); #if WORDS_BIGENDIAN - -#define ce_first_int_low_byte (ce, ce_first) \ - ce_first[-1] +#define ce_first_int_low_byte(ce, ce_first) ((unsigned long)((ce_first)[-1])) #else #define ce_first_int_low_byte(ce, ce_first) \ ce[ce[0] & CE_IS_SHORT ? 3 : 5] #endif - -#if WORDS_BIGENDIAN -#define ce_first_int_low_byte (ce, ce_first) \ - ce_first[-1] -#else -#define ce_first_int_low_byte(ce, ce_first) \ - ce[ce[0] & CE_IS_SHORT ? 3 : 5] -#endif extern int dbf_ignore_uneven_col; void ceic_upd_rd (ce_ins_ctx_t * ceic, int map_pos, int nth_col, db_buf_t str); void ce_skip_bits_2 (db_buf_t bits, int skip, int * byte_ret, int * bit_ret);