redefined TRE_CHAR_MAX to avoid the overflow issue
This commit is contained in:
parent
4e0057b3f0
commit
fddfa537e5
@ -220,7 +220,7 @@ tre_do_print(FILE *stream, tre_ast_node_t *ast, int indent)
|
||||
else
|
||||
{
|
||||
fprintf(stream, "literal (%c, %c) (%d, %d), pos %d, sub %d, "
|
||||
"%d tags\n", code_min, code_max, code_min, code_max, pos,
|
||||
"%d tags\n", (int)code_min, (int)code_max, (int)code_min, (int)code_max, pos,
|
||||
ast->submatch_id, num_tags);
|
||||
}
|
||||
break;
|
||||
|
@ -59,8 +59,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _HAWK_LIB_CMN_TRE_AST_H_
|
||||
#define _HAWK_LIB_CMN_TRE_AST_H_
|
||||
#ifndef _HAWK_LIB_TRE_AST_H_
|
||||
#define _HAWK_LIB_TRE_AST_H_
|
||||
|
||||
#include "tre-prv.h"
|
||||
#include "tre-mem.h"
|
||||
|
@ -1753,9 +1753,9 @@ tre_make_trans(hawk_gem_t* gem, tre_pos_and_tags_t *p1, tre_pos_and_tags_t *p2,
|
||||
int *tags;
|
||||
|
||||
DPRINT((" %2d -> %2d on %3d", p1->position, p2->position,
|
||||
p1->code_min));
|
||||
(int)p1->code_min));
|
||||
if (p1->code_max != p1->code_min)
|
||||
DPRINT(("-%3d", p1->code_max));
|
||||
DPRINT(("-%3d", (int)p1->code_max));
|
||||
tags = trans->tags;
|
||||
if (tags)
|
||||
{
|
||||
|
@ -59,8 +59,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _HAWK_LIB_CMN_TRE_COMPILE_H_
|
||||
#define _HAWK_LIB_CMN_TRE_COMPILE_H_
|
||||
#ifndef _HAWK_LIB_TRE_COMPILE_H_
|
||||
#define _HAWK_LIB_TRE_COMPILE_H_
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -231,7 +231,6 @@ tre_tnfa_run_backtrack(hawk_gem_t* gem, const tre_tnfa_t *tnfa, const void *stri
|
||||
/* Current TNFA state. */
|
||||
tre_tnfa_transition_t *state;
|
||||
int *states_seen = NULL;
|
||||
|
||||
/* Memory allocator to for allocating the backtracking stack. */
|
||||
tre_mem_t mem = tre_bt_mem_new(gem);
|
||||
|
||||
@ -581,7 +580,8 @@ backtrack:
|
||||
if (stack->prev)
|
||||
{
|
||||
DPRINT((" backtracking\n"));
|
||||
if (stack->item.state->assertions && ASSERT_BACKREF)
|
||||
/*if (stack->item.state->assertions && ASSERT_BACKREF)*/
|
||||
if (stack->item.state->assertions & ASSERT_BACKREF)
|
||||
{
|
||||
DPRINT((" states_seen[%d] = 0\n", stack->item.state_id));
|
||||
states_seen[stack->item.state_id] = 0;
|
||||
|
@ -58,8 +58,8 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _HAWK_LIB_CMN_TRE_PARSE_H_
|
||||
#define _HAWK_LIB_CMN_TRE_PARSE_H_
|
||||
#ifndef _HAWK_LIB_TRE_PARSE_H_
|
||||
#define _HAWK_LIB_TRE_PARSE_H_
|
||||
|
||||
/* Parse context. */
|
||||
typedef struct
|
||||
|
@ -263,7 +263,24 @@ typedef hawk_ooci_t tre_cint_t;
|
||||
|
||||
/* Define the character types and functions. */
|
||||
#ifdef TRE_WCHAR
|
||||
# define TRE_CHAR_MAX HAWK_TYPE_MAX(hawk_uch_t)
|
||||
/* [HAWK]
|
||||
* the TRE code uses the int type to represent a code point
|
||||
* in various part. in fact, it uses int, long, tre_cint_t intermixedly.
|
||||
* it's not easy to switch to a single type because lit->code_max is bitwise-ORed
|
||||
* with the assertions field which is of the int type.
|
||||
*
|
||||
* if TRE_CHAR_MAX is greater than INT_MAX, some comparion fails as TRE_CHAR_MAX
|
||||
* is treated as -1. here let me define TRE_CHAR_MAX to avoid this issue.
|
||||
*
|
||||
* however, if int is 2 bytes long,TRE_CHAR_MAX becomes 32767 which is way too small
|
||||
* to represent even upper-half of the UCS-2 codepoints.
|
||||
*/
|
||||
# if (HAWK_SIZEOF_UCH_T < HAWK_SIZEOF_INT)
|
||||
# define TRE_CHAR_MAX HAWK_TYPE_MAX(hawk_uch_t)
|
||||
# else
|
||||
# define TRE_CHAR_MAX HAWK_TYPE_MAX(int)
|
||||
# endif
|
||||
|
||||
/*
|
||||
# ifdef TRE_MULTIBYTE
|
||||
# define TRE_MB_CUR_MAX (hawk_getmbcurmax())
|
||||
@ -313,6 +330,7 @@ struct tnfa_transition
|
||||
/* END HAWK */
|
||||
tre_cint_t code_min;
|
||||
tre_cint_t code_max;
|
||||
|
||||
/* Pointer to the destination state. */
|
||||
tre_tnfa_transition_t *state;
|
||||
/* ID number of the destination state. */
|
||||
|
Loading…
Reference in New Issue
Block a user