diff --git a/ext/objspace/objspace_dump.c b/ext/objspace/objspace_dump.c index e4f1216a9a..24a2b0b245 100644 --- a/ext/objspace/objspace_dump.c +++ b/ext/objspace/objspace_dump.c @@ -142,7 +142,7 @@ dump_append_sizet(struct dump_config *dc, const size_t number) } static void -dump_append_c(struct dump_config *dc, char c) +dump_append_c(struct dump_config *dc, unsigned char c) { if (c <= 0x1f) { const unsigned int width = (sizeof(c) * CHAR_BIT / 4) + 5; diff --git a/test/objspace/test_objspace.rb b/test/objspace/test_objspace.rb index 1392447e4f..3b90319858 100644 --- a/test/objspace/test_objspace.rb +++ b/test/objspace/test_objspace.rb @@ -725,4 +725,19 @@ class TestObjSpace < Test::Unit::TestCase assert_equal '42', out[2] end end + + def test_utf8_method_names + name = "utf8_❨╯°□°❩╯︵┻━┻" + obj = ObjectSpace.trace_object_allocations do + __send__(name) + end + dump = ObjectSpace.dump(obj) + assert_equal name, JSON.parse(dump)["method"], dump + end + + private + + def utf8_❨╯°□°❩╯︵┻━┻ + "1#{2}" + end end