diff options
Diffstat (limited to 'regint.h')
| -rw-r--r-- | regint.h | 46 |
1 files changed, 20 insertions, 26 deletions
@@ -5,7 +5,7 @@ **********************************************************************/ /*- * Copyright (c) 2002-2013 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> - * Copyright (c) 2011-2016 K.Takata <kentkt AT csc DOT jp> + * Copyright (c) 2011-2019 K.Takata <kentkt AT csc DOT jp> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -86,13 +86,12 @@ /* #define USE_OP_PUSH_OR_JUMP_EXACT */ #define USE_QTFR_PEEK_NEXT #define USE_ST_LIBRARY -#define USE_SUNDAY_QUICK_SEARCH #define INIT_MATCH_STACK_SIZE 160 #define DEFAULT_MATCH_STACK_LIMIT_SIZE 0 /* unlimited */ #define DEFAULT_PARSE_DEPTH_LIMIT 4096 -#define OPT_EXACT_MAXLEN 24 +#define OPT_EXACT_MAXLEN 24 /* This must be smaller than ONIG_CHAR_TABLE_SIZE. */ /* check config */ #if defined(USE_PERL_SUBEXP_CALL) || defined(USE_CAPITAL_P_NAMED_GROUP) @@ -154,12 +153,14 @@ #ifdef RUBY # define CHECK_INTERRUPT_IN_MATCH_AT do { \ - msa->counter++; \ - if (msa->counter >= 128) { \ - msa->counter = 0; \ - rb_reg_check_timeout(reg, &msa->end_time); \ - rb_thread_check_ints(); \ - } \ + msa->counter++; \ + if (msa->counter >= 128) { \ + msa->counter = 0; \ + if (rb_reg_timeout_p(reg, &msa->end_time)) { \ + goto timeout; \ + } \ + rb_thread_check_ints(); \ + } \ } while(0) # define onig_st_init_table st_init_table # define onig_st_init_table_with_size st_init_table_with_size @@ -214,9 +215,7 @@ #define xmemcpy memcpy #define xmemmove memmove -#if ((defined(RUBY_MSVCRT_VERSION) && RUBY_MSVCRT_VERSION >= 90) \ - || (!defined(RUBY_MSVCRT_VERSION) && defined(_WIN32))) \ - && !defined(__GNUC__) +#if defined(_WIN32) && !defined(__GNUC__) # define xalloca _alloca # define xvsnprintf(buf,size,fmt,args) _vsnprintf_s(buf,size,_TRUNCATE,fmt,args) # define xsnprintf sprintf_s @@ -265,19 +264,6 @@ # include <stdio.h> #endif -#ifdef _WIN32 -# if defined(_MSC_VER) && (_MSC_VER < 1300) -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -typedef int intptr_t; -# endif -# ifndef _UINTPTR_T_DEFINED -# define _UINTPTR_T_DEFINED -typedef unsigned int uintptr_t; -# endif -# endif -#endif /* _WIN32 */ - #ifndef PRIdPTR # ifdef _WIN64 # define PRIdPTR "I64d" @@ -873,6 +859,12 @@ typedef struct _OnigStackType { UChar *abs_pstr; /* absent start position */ const UChar *end_pstr; /* end position */ } absent_pos; +#ifdef USE_MATCH_CACHE + struct { + long index; /* index of the match cache buffer */ + uint8_t mask; /* bit-mask for the match cache buffer */ + } match_cache_point; +#endif } u; } OnigStackType; @@ -883,6 +875,8 @@ typedef struct { int outer_repeat_mem; long num_cache_points_at_outer_repeat; long num_cache_points_in_outer_repeat; + int lookaround_nesting; + UChar *match_addr; } OnigCacheOpcode; #endif @@ -988,7 +982,7 @@ extern int onig_st_insert_strend(hash_table_type* table, const UChar* str_key, c #ifdef RUBY extern size_t onig_memsize(const regex_t *reg); extern size_t onig_region_memsize(const struct re_registers *regs); -void rb_reg_check_timeout(regex_t *reg, void *end_time); +bool rb_reg_timeout_p(regex_t *reg, void *end_time); #endif RUBY_SYMBOL_EXPORT_END |
