From 4e219d8f7d3e76cf60e747dc16deb3452f297442 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 2 Oct 2024 19:04:48 +0900 Subject: [PATCH] Split appending options to ruby_description It's becoming tedious to map each format specifier to an argument. --- version.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/version.c b/version.c index 48b5be1b19..86415b83d1 100644 --- a/version.c +++ b/version.c @@ -153,20 +153,14 @@ define_ruby_description(const char *const jit_opt) + rb_strlen_lit(" +PRISM") ]; - const char *const threads_opt = ruby_mn_threads_enabled ? " +MN" : ""; - const char *const parser_opt = (*rb_ruby_prism_ptr()) ? " +PRISM" : ""; - - int n = snprintf(desc, sizeof(desc), - "%.*s" - "%s" // jit_opt - "%s" // threads_opts - "%s" // parser_opt - "%s", - ruby_description_opt_point, ruby_description, - jit_opt, - threads_opt, - parser_opt, - ruby_description + ruby_description_opt_point); + int n = ruby_description_opt_point; + memcpy(desc, ruby_description, n); +# define append(s) (n += (int)strlcpy(desc + n, s, sizeof(desc) - n), assert(n < sizeof(desc))) + if (*jit_opt) append(jit_opt); + if (ruby_mn_threads_enabled) append(" +MN"); + if (*rb_ruby_prism_ptr()) append(" +PRISM"); + append(ruby_description + ruby_description_opt_point); +# undef append VALUE description = rb_obj_freeze(rb_usascii_str_new_static(desc, n)); rb_dynamic_description = desc;