From 36ff0521c1e81f83bf050d428815ae7413960136 Mon Sep 17 00:00:00 2001 From: TSUYUSATO Kitsune Date: Wed, 9 Nov 2022 12:19:52 +0900 Subject: [PATCH] Use long instead of int --- regexec.c | 30 +++++++++++++++--------------- regint.h | 15 ++++++++------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/regexec.c b/regexec.c index febcb03f64..cfef254c2e 100644 --- a/regexec.c +++ b/regexec.c @@ -235,15 +235,15 @@ onig_get_capture_tree(OnigRegion* region) /* count number of jump-like opcodes for allocation of cache memory. */ /* return -1 if we cannot optimize the regex matching by using cache. */ -static int count_num_cache_opcode(regex_t* reg, int* table_size) +static long count_num_cache_opcode(regex_t* reg, long* table_size) { - int num = 0; + long num = 0; UChar* p = reg->p; UChar* pend = p + reg->used; LengthType len; MemNumType mem; MemNumType current_mem = -1; - int current_mem_num = 0; + long current_mem_num = 0; OnigEncoding enc = reg->enc; while (p < pend) { @@ -456,8 +456,8 @@ static void init_cache_index_table(regex_t* reg, OnigCacheIndex *table) LengthType len; MemNumType mem; MemNumType current_mem = -1; - int num = 0; - int current_mem_num = 0; + long num = 0; + long current_mem_num = 0; OnigEncoding enc = reg->enc; while (p < pend) { @@ -1162,9 +1162,9 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, if (enable) {\ int cache_index = find_cache_index_table((reg), (stk), (repeat_stk), (table), (num_cache_table), (p));\ if (cache_index >= 0) {\ - int key = (num_cache_size) * (int)(pos) + cache_index;\ - int index = key >> 3;\ - int mask = 1 << (key & 7);\ + long key = (num_cache_size) * (long)(pos) + cache_index;\ + long index = key >> 3;\ + long mask = 1 << (key & 7);\ if ((match_cache)[index] & mask) {\ goto fail;\ }\ @@ -1214,11 +1214,11 @@ static int find_cache_index_table(regex_t* reg, OnigStackType *stk, OnigStackInd return range->base_num + range->inner_num * range->lower + (range->inner_num + 1) * (count - range->lower) + item->num; } -static void reset_match_cache(regex_t* reg, UChar* pbegin, UChar* pend, int pos, uint8_t* match_cache, OnigCacheIndex *table, int num_cache_size, int num_cache_table) { - int l = 0, r = num_cache_table - 1, m1 = 0, m2 = 0; +static void reset_match_cache(regex_t* reg, UChar* pbegin, UChar* pend, long pos, uint8_t* match_cache, OnigCacheIndex *table, long num_cache_size, long num_cache_table) { + long l = 0, r = num_cache_table - 1, m1 = 0, m2 = 0; int is_inc = *pend == OP_REPEAT_INC || *pend == OP_REPEAT_INC_NG; OnigCacheIndex *item1, *item2; - int k1, k2; + long k1, k2; while (l <= r) { m1 = (l + r) / 2; @@ -3428,7 +3428,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, default: goto unexpected_bytecode_error; } - reset_match_cache(reg, addr, pbegin, (int)(s - str), msa->match_cache, msa->cache_index_table, msa->num_cache_table ,msa->num_cache_opcode); + reset_match_cache(reg, addr, pbegin, (long)(s - str), msa->match_cache, msa->cache_index_table, msa->num_cache_table ,msa->num_cache_opcode); } # endif } @@ -3820,8 +3820,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, pkeep = stk->u.state.pkeep; #ifdef USE_CACHE_MATCH_OPT - if (++msa->num_fail >= (int)(end - str) + 1 && msa->num_cache_opcode == NUM_CACHE_OPCODE_UNINIT) { - int table_size = 0; + if (++msa->num_fail >= (long)(end - str) + 1 && msa->num_cache_opcode == NUM_CACHE_OPCODE_UNINIT) { + long table_size = 0; msa->enable_cache_match_opt = 1; if (msa->num_cache_opcode == NUM_CACHE_OPCODE_UNINIT) { msa->num_cache_opcode = count_num_cache_opcode(reg, &table_size); @@ -3846,7 +3846,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, return ONIGERR_MEMORY; } /* Currently, int is used for the key of match_cache */ - if (match_cache_size8 >= INT_MAX_LIMIT) { + if (match_cache_size8 >= LONG_MAX_LIMIT) { return ONIGERR_MEMORY; } size_t match_cache_size = (match_cache_size8 >> 3) + (match_cache_size8 & 7 ? 1 : 0); diff --git a/regint.h b/regint.h index 12b5d5c70a..75073e6377 100644 --- a/regint.h +++ b/regint.h @@ -387,6 +387,7 @@ typedef unsigned int BitStatusType; #define INT_MAX_LIMIT ((1UL << (SIZEOF_INT * 8 - 1)) - 1) +#define LONG_MAX_LIMIT ((1UL << (SIZEOF_LONG * 8 - 1)) - 1) #define DIGITVAL(code) ((code) - '0') #define ODIGITVAL(code) DIGITVAL(code) @@ -875,7 +876,7 @@ typedef struct _OnigStackType { #ifdef USE_CACHE_MATCH_OPT typedef struct { UChar *addr; - int num; + long num; int outer_repeat; } OnigCacheIndex; #endif @@ -903,12 +904,12 @@ typedef struct { uint64_t end_time; #endif #ifdef USE_CACHE_MATCH_OPT - int num_fail; - int enable_cache_match_opt; - int num_cache_opcode; - int num_cache_table; - OnigCacheIndex *cache_index_table; - uint8_t *match_cache; + long num_fail; + int enable_cache_match_opt; + long num_cache_opcode; + long num_cache_table; + OnigCacheIndex* cache_index_table; + uint8_t* match_cache; #endif } OnigMatchArg;