ruby-changes:68142
From: Nobuyoshi <ko1@a...>
Date: Mon, 27 Sep 2021 19:02:58 +0900 (JST)
Subject: [ruby-changes:68142] efa0c31ce5 (master): Add printf-style format attribute to oniguruma functions
https://git.ruby-lang.org/ruby.git/commit/?id=efa0c31ce5 From efa0c31ce518bb26aca80392cce7fc5471ca9fef Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada <nobu@r...> Date: Mon, 27 Sep 2021 19:02:45 +0900 Subject: Add printf-style format attribute to oniguruma functions Also make the format string compatible with literal strings which are const arrays of "plain" chars. --- regerror.c | 4 ++-- regint.h | 8 ++++++-- regparse.c | 6 +++++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/regerror.c b/regerror.c index efcfeff..b18fc2e 100644 --- a/regerror.c +++ b/regerror.c @@ -312,7 +312,7 @@ onig_error_code_to_str(UChar* s, OnigPosition code, ...) https://github.com/ruby/ruby/blob/trunk/regerror.c#L312 void onig_vsnprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, - UChar* pat, UChar* pat_end, const UChar *fmt, va_list args) + UChar* pat, UChar* pat_end, const char *fmt, va_list args) { size_t need; int n, len; @@ -376,7 +376,7 @@ onig_vsnprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, https://github.com/ruby/ruby/blob/trunk/regerror.c#L376 #if 0 /* unused */ void onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, - UChar* pat, UChar* pat_end, const UChar *fmt, ...) + UChar* pat, UChar* pat_end, const char *fmt, ...) { va_list args; va_start(args, fmt); diff --git a/regint.h b/regint.h index 0740429..b136d80 100644 --- a/regint.h +++ b/regint.h @@ -903,9 +903,13 @@ extern void onig_print_statistics(FILE* f); https://github.com/ruby/ruby/blob/trunk/regint.h#L903 # endif #endif +#ifndef PRINTF_ARGS +#define PRINTF_ARGS(func, fmt, vargs) func +#endif + extern UChar* onig_error_code_to_format(OnigPosition code); -extern void onig_vsnprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, va_list args); -extern void onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...); +PRINTF_ARGS(extern void onig_vsnprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const char *fmt, va_list args), 6, 0); +PRINTF_ARGS(extern void onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const char *fmt, ...), 6, 7); extern int onig_bbuf_init(BBuf* buf, OnigDistance size); extern int onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo); #ifdef RUBY diff --git a/regparse.c b/regparse.c index 24ff5b9..3348381 100644 --- a/regparse.c +++ b/regparse.c @@ -2833,6 +2833,10 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end, https://github.com/ruby/ruby/blob/trunk/regparse.c#L2833 #endif /* USE_NAMED_GROUP */ +#ifdef PRINTF_ARGS +PRINTF_ARGS(static void onig_syntax_warn(ScanEnv *env, const char *fmt, ...), 2, 3); +#endif + static void onig_syntax_warn(ScanEnv *env, const char *fmt, ...) { @@ -2841,7 +2845,7 @@ onig_syntax_warn(ScanEnv *env, const char *fmt, ...) https://github.com/ruby/ruby/blob/trunk/regparse.c#L2845 va_start(args, fmt); onig_vsnprintf_with_pattern(buf, WARN_BUFSIZE, env->enc, env->pattern, env->pattern_end, - (const UChar *)fmt, args); + fmt, args); va_end(args); #ifdef RUBY if (env->sourcefile == NULL) -- cgit v1.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/