diff options
author | K.Kosako <kkosako0@gmail.com> | 2024-04-02 23:02:00 +0900 |
---|---|---|
committer | K.Kosako <kkosako0@gmail.com> | 2024-04-02 23:02:00 +0900 |
commit | 3ce77a30236441af7fd47413da8d2e67f10ae950 (patch) | |
tree | 321a72d0222ced961adc58ee27040ce462f0e548 | |
parent | 32c6da97e0e575a1a236703c2d2a73508b5f2a4a (diff) | |
download | oniguruma-3ce77a30236441af7fd47413da8d2e67f10ae950.zip oniguruma-3ce77a30236441af7fd47413da8d2e67f10ae950.tar.gz oniguruma-3ce77a30236441af7fd47413da8d2e67f10ae950.tar.bz2 |
fix total call with whole options
-rw-r--r-- | src/regcomp.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/regcomp.c b/src/regcomp.c index 10da9c4..9f2d5aa 100644 --- a/src/regcomp.c +++ b/src/regcomp.c @@ -2,7 +2,7 @@ regcomp.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2023 K.Kosako + * Copyright (c) 2002-2024 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -5197,12 +5197,18 @@ check_call_reference(CallNode* cn, ParseEnv* env, int state) #ifdef USE_WHOLE_OPTIONS static int -check_whole_options_position(Node* node /* root */) +check_whole_options_position(Node* node /* root */, ParseEnv* env) { int is_list; is_list = FALSE; +#ifdef USE_CALL + if ((env->flags & PE_FLAG_HAS_CALL_ZERO) != 0) { + node = ND_BODY(node); + } +#endif + start: switch (ND_TYPE(node)) { case ND_LIST: @@ -7394,7 +7400,7 @@ static int parse_and_tune(regex_t* reg, const UChar* pattern, #ifdef USE_WHOLE_OPTIONS if ((scan_env->flags & PE_FLAG_HAS_WHOLE_OPTIONS) != 0) { - r = check_whole_options_position(root); + r = check_whole_options_position(root, scan_env); if (r != 0) goto err; } #endif |