diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-08-25 23:27:52 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-08-25 23:34:02 +0900 |
commit | fe73f9f24bd0f9c1f4059707a87c8588ca13a139 (patch) | |
tree | f4b1bc17b8db9ef52932dcd92291889bbce25d88 | |
parent | f5c8bdaa8ab1e42329c9877794fa5e3e936b2a55 (diff) | |
download | ruby-fe73f9f24bd0f9c1f4059707a87c8588ca13a139.tar.gz |
Replace only use of `snprintf` in parser
-rw-r--r-- | parse.y | 18 | ||||
-rw-r--r-- | ruby_parser.c | 1 | ||||
-rw-r--r-- | rubyparser.h | 5 |
3 files changed, 12 insertions, 12 deletions
@@ -7710,6 +7710,13 @@ parser_mixed_escape(struct parser_params *p, const char *beg, rb_encoding *enc1, p->lex.pcur = pos; } +static inline char +nibble_char_upper(unsigned int c) +{ + c &= 0xf; + return c + (c < 10 ? '0' : 'A' - 10); +} + static int tokadd_string(struct parser_params *p, int func, int term, int paren, long *nest, @@ -7799,12 +7806,11 @@ tokadd_string(struct parser_params *p, pushback(p, c); c = read_escape(p, 0, enc); - int i; - char escbuf[5]; - snprintf(escbuf, sizeof(escbuf), "\\x%02X", c); - for (i = 0; i < 4; i++) { - tokadd(p, escbuf[i]); - } + char *t = tokspace(p, rb_strlen_lit("\\x00")); + *t++ = '\\'; + *t++ = 'x'; + *t++ = nibble_char_upper(c >> 4); + *t++ = nibble_char_upper(c); continue; } } diff --git a/ruby_parser.c b/ruby_parser.c index 77328d3821..6aaa867c16 100644 --- a/ruby_parser.c +++ b/ruby_parser.c @@ -774,7 +774,6 @@ rb_parser_config_initialize(rb_parser_config_t *config) config->long2int = rb_long2int; config->special_const_p = special_const_p; config->builtin_type = builtin_type; - config->snprintf = snprintf; config->node_case_when_optimizable_literal = rb_node_case_when_optimizable_literal; diff --git a/rubyparser.h b/rubyparser.h index 388f6c0c13..e95b71f049 100644 --- a/rubyparser.h +++ b/rubyparser.h @@ -601,11 +601,6 @@ typedef struct rb_parser_config_struct { int (*long2int)(long); int (*special_const_p)(VALUE); int (*builtin_type)(VALUE); -#undef snprintf - int (*snprintf)(char *str, size_t n, char const *fmt, ...); -#ifdef RUBY_SUBST_H -# define snprintf(...) ruby_snprintf(__VA_ARGS__) -#endif VALUE (*node_case_when_optimizable_literal)(const NODE *const node); |