From cf4351f82a8e7ea18b351c9d06b0ea76fb6d0d85 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 23 Oct 2017 06:42:37 +0000 Subject: [PATCH] error.c: warning to write multiple arguments * error.c (warning_write): accepts multiple arguments to merge multiple warning messages. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60378 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- error.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/error.c b/error.c index 9bd8c31386..668bc9bfa8 100644 --- a/error.c +++ b/error.c @@ -300,6 +300,15 @@ end_with_asciichar(VALUE str, int c) rb_str_end_with_asciichar(str, c); } +static VALUE +warning_write(int argc, VALUE *argv, VALUE buf) +{ + while (argc-- > 0) { + rb_str_append(buf, *argv++); + } + return buf; +} + /* * call-seq: * warn(msg, ...) -> nil @@ -2246,7 +2255,7 @@ Init_Exception(void) rb_extend_object(rb_mWarning, rb_mWarning); rb_cWarningBuffer = rb_define_class_under(rb_mWarning, "buffer", rb_cString); - rb_define_method(rb_cWarningBuffer, "write", rb_str_append, 1); + rb_define_method(rb_cWarningBuffer, "write", warning_write, -1); rb_define_global_function("warn", rb_warn_m, -1);