--- libsrc/Wi/wifn.h 2023-03-01 18:18:32.000000000 +0800 +++ libsrc/Wi/wifn.h 2025-09-08 15:21:23.000000000 +0800 @@ -161,7 +161,38 @@ #if WORDS_BIGENDIAN -#error DV_EQ must have big endia def +#define DV_EQ(p1, p2, neq) \ +{ \ + db_buf_t dv1 = (db_buf_t)p1, dv2 = (db_buf_t)p2; \ + uint64 w1, w2, xo; \ + memcpy(&w1, dv1, sizeof(uint64)); \ + memcpy(&w2, dv2, sizeof(uint64)); \ + xo = w1 ^ w2; \ + int l = db_buf_const_length[(dtp_t)w1]; \ + if (l < 0) \ + { \ + l = 2 + (int)(dtp_t)(w1 >> 8); \ + } \ + else if (l == 0) \ + { long l2, hl2; \ + db_buf_length (dv1, &l2, &hl2); \ + l = l2 + hl2; \ + } \ + if (l >= 8) \ + { \ + if (xo) goto neq; \ + dv1 += 8; \ + dv2 += 8; \ + l -= 8; \ + memcmp_8 (dv1, dv2, l, neq); \ + } \ + else \ + { \ + uint64 mask = (((uint64)1 << (l << 3)) - 1); \ + if (xo & mask) \ + goto neq; \ + } \ +} #else #define DV_EQ(p1, p2, neq) \ { \