зеркало из https://github.com/github/ruby.git
pack.c: escape and encoding
* pack.c (pack_pack): escape unprintable characters and preserve the encoding of warning message. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
fa892d27af
Коммит
1f53145dd4
|
@ -1,3 +1,8 @@
|
|||
Thu Nov 6 23:58:40 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* pack.c (pack_pack): escape unprintable characters and preserve
|
||||
the encoding of warning message.
|
||||
|
||||
Thu Nov 6 23:55:18 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* string.c (sym_printable): QUOTE() should not raise an exception
|
||||
|
|
15
pack.c
15
pack.c
|
@ -912,10 +912,19 @@ pack_pack(VALUE ary, VALUE fmt)
|
|||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
rb_warning("unknown pack directive '%c' in '%s'",
|
||||
type, RSTRING_PTR(fmt));
|
||||
default: {
|
||||
char unknown[5];
|
||||
if (ISPRINT(type)) {
|
||||
unknown[0] = type;
|
||||
unknown[1] = '\0';
|
||||
}
|
||||
else {
|
||||
snprintf(unknown, sizeof(unknown), "\\x%.2x", type & 0xff);
|
||||
}
|
||||
rb_warning("unknown pack directive '%s' in '% "PRIsVALUE"'",
|
||||
unknown, fmt);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -718,5 +718,13 @@ EXPECTED
|
|||
assert_warning(/unknown pack directive ',' in ','/) {
|
||||
[].pack(",")
|
||||
}
|
||||
assert_warning(/\A[ -~]+\Z/) {
|
||||
[].pack("\x7f")
|
||||
}
|
||||
assert_warning(/\A(.* in '\u{3042}'\n)+\z/) {
|
||||
EnvUtil.with_default_external(Encoding::UTF_8) {
|
||||
[].pack("\u{3042}")
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
|
|
Загрузка…
Ссылка в новой задаче