From 57611240a972932ef26a13c6998a7fa90fd33371 Mon Sep 17 00:00:00 2001 From: dearblue Date: Thu, 24 Sep 2020 22:25:26 +0900 Subject: Prohibit string changes by "s"/"z" specifier of `mrb_get_args()` - The `s` specifier is a string pointer obtained without performing `mrb_str_modify()`, so it cannot be changed. - The `z` specifier cannot be changed because it is a string pointer obtained by `RSTRING_CSTR()` which returns `const char *`. --- src/class.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/class.c') diff --git a/src/class.c b/src/class.c index fc8a38ff9..fcbdadea8 100644 --- a/src/class.c +++ b/src/class.c @@ -584,8 +584,8 @@ void mrb_hash_check_kdict(mrb_state *mrb, mrb_value self); S: String [mrb_value] when ! follows, the value may be nil A: Array [mrb_value] when ! follows, the value may be nil H: Hash [mrb_value] when ! follows, the value may be nil - s: String [char*,mrb_int] Receive two arguments; s! gives (NULL,0) for nil - z: String [char*] NUL terminated string; z! gives NULL for nil + s: String [const char*,mrb_int] Receive two arguments; s! gives (NULL,0) for nil + z: String [const char*] NUL terminated string; z! gives NULL for nil a: Array [mrb_value*,mrb_int] Receive two arguments; a! gives (NULL,0) for nil c: Class/Module [strcut RClass*] f: Fixnum/Float [mrb_float] @@ -772,10 +772,10 @@ mrb_get_args(mrb_state *mrb, const char *format, ...) case 's': { mrb_value ss; - char **ps = 0; + const char **ps = 0; mrb_int *pl = 0; - ps = va_arg(ap, char**); + ps = va_arg(ap, const char**); pl = va_arg(ap, mrb_int*); if (i < argc) { ss = argv[i++]; -- cgit v1.2.3