signal.c: make signame_prefix a nul-terminated string

gcc 9.1.0 warns this.

```
signal.c:258:46: warning: '%.*s' directive argument is not a nul-terminated string [-Wformat-overflow=]
  258 |  rb_raise(rb_eArgError, "unsupported signal `%.*s%"PRIsVALUE"'",
      |                                              ^~~~
  259 |    prefix, signame_prefix, vsig);
      |            ~~~~~~~~~~~~~~
signal.c:200:19: note: referenced argument declared here
  200 | static const char signame_prefix[3] = "SIG";
      |                   ^~~~~~~~~~~~~~
```
https://rubyci.org/logs/rubyci.s3.amazonaws.com/ubuntu/ruby-master/log/20190801T033009Z.log.html.gz
This commit is contained in:
Yusuke Endoh 2019-08-01 14:25:15 +09:00
parent 7463867106
commit f45bb760fb

View File

@ -197,8 +197,8 @@ static const struct signals {
#endif
};
static const char signame_prefix[3] = "SIG";
static const int signame_prefix_len = (int)sizeof(signame_prefix);
static const char signame_prefix[] = "SIG";
static const int signame_prefix_len = 3;
static int
signm2signo(VALUE *sig_ptr, int negative, int exit, int *prefix_ptr)
@ -236,7 +236,7 @@ signm2signo(VALUE *sig_ptr, int negative, int exit, int *prefix_ptr)
negative = 0;
}
if (len >= prefix + signame_prefix_len) {
if (memcmp(nm + prefix, signame_prefix, sizeof(signame_prefix)) == 0)
if (memcmp(nm + prefix, signame_prefix, signame_prefix_len) == 0)
prefix += signame_prefix_len;
}
if (len <= (long)prefix) {