[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]