From d615dbf4e28d26c3fd7a54ad58d7365521378599 Mon Sep 17 00:00:00 2001 From: Burdette Lamar Date: Sun, 28 Dec 2025 14:51:10 -0600 Subject: [PATCH 1/2] [DOC] Japanese for multi-byte characters --- doc/language/character_selectors.rdoc | 1 - doc/matchdata/begin.rdoc | 12 ++++++------ doc/matchdata/bytebegin.rdoc | 12 ++++++------ doc/matchdata/byteend.rdoc | 12 ++++++------ doc/matchdata/end.rdoc | 12 ++++++------ doc/matchdata/offset.rdoc | 12 ++++++------ 6 files changed, 30 insertions(+), 31 deletions(-) diff --git a/doc/language/character_selectors.rdoc b/doc/language/character_selectors.rdoc index 20685b8392b655..8bfc9b719b75bf 100644 --- a/doc/language/character_selectors.rdoc +++ b/doc/language/character_selectors.rdoc @@ -31,7 +31,6 @@ contained in the selector itself: 'abracadabra'.delete('abc') # => "rdr" '0123456789'.delete('258') # => "0134679" '!@#$%&*()_+'.delete('+&#') # => "!@$%*()_" - 'тест'.delete('т') # => "ес" 'こんにちは'.delete('に') # => "こんちは" Note that order and repetitions do not matter: diff --git a/doc/matchdata/begin.rdoc b/doc/matchdata/begin.rdoc index 8046dd9d55840c..6100617e19cf0c 100644 --- a/doc/matchdata/begin.rdoc +++ b/doc/matchdata/begin.rdoc @@ -10,12 +10,12 @@ returns the offset of the beginning of the nth match: m[3] # => "113" m.begin(3) # => 3 - m = /(т)(е)(с)/.match('тест') - # => # - m[0] # => "тес" - m.begin(0) # => 0 - m[3] # => "с" - m.begin(3) # => 2 + m = /(ん)(に)(ち)/.match('こんにちは') + # => # + m[0] # => "んにち" + m.begin(0) # => 1 + m[3] # => "ち" + m.begin(3) # => 3 When string or symbol argument +name+ is given, returns the offset of the beginning for the named match: diff --git a/doc/matchdata/bytebegin.rdoc b/doc/matchdata/bytebegin.rdoc index 5b40a7ef73ce4a..54e417a7fca510 100644 --- a/doc/matchdata/bytebegin.rdoc +++ b/doc/matchdata/bytebegin.rdoc @@ -10,12 +10,12 @@ returns the offset of the beginning of the nth match: m[3] # => "113" m.bytebegin(3) # => 3 - m = /(т)(е)(с)/.match('тест') - # => # - m[0] # => "тес" - m.bytebegin(0) # => 0 - m[3] # => "с" - m.bytebegin(3) # => 4 + m = /(ん)(に)(ち)/.match('こんにちは') + # => # + m[0] # => "んにち" + m.bytebegin(0) # => 3 + m[3] # => "ち" + m.bytebegin(3) # => 9 When string or symbol argument +name+ is given, returns the offset of the beginning for the named match: diff --git a/doc/matchdata/byteend.rdoc b/doc/matchdata/byteend.rdoc index eb576640220b05..0a03f762088d22 100644 --- a/doc/matchdata/byteend.rdoc +++ b/doc/matchdata/byteend.rdoc @@ -10,12 +10,12 @@ returns the offset of the end of the nth match: m[3] # => "113" m.byteend(3) # => 6 - m = /(т)(е)(с)/.match('тест') - # => # - m[0] # => "тес" - m.byteend(0) # => 6 - m[3] # => "с" - m.byteend(3) # => 6 + m = /(ん)(に)(ち)/.match('こんにちは') + # => # + m[0] # => "んにち" + m.byteend(0) # => 12 + m[3] # => "ち" + m.byteend(3) # => 12 When string or symbol argument +name+ is given, returns the offset of the end for the named match: diff --git a/doc/matchdata/end.rdoc b/doc/matchdata/end.rdoc index 0209b2d2fc097f..c43a5428f3d1ad 100644 --- a/doc/matchdata/end.rdoc +++ b/doc/matchdata/end.rdoc @@ -10,12 +10,12 @@ returns the offset of the end of the nth match: m[3] # => "113" m.end(3) # => 6 - m = /(т)(е)(с)/.match('тест') - # => # - m[0] # => "тес" - m.end(0) # => 3 - m[3] # => "с" - m.end(3) # => 3 + m = /(ん)(に)(ち)/.match('こんにちは') + # => # + m[0] # => "んにち" + m.end(0) # => 4 + m[3] # => "ち" + m.end(3) # => 4 When string or symbol argument +name+ is given, returns the offset of the end for the named match: diff --git a/doc/matchdata/offset.rdoc b/doc/matchdata/offset.rdoc index 0985316d763de2..4194ef7ef9e13a 100644 --- a/doc/matchdata/offset.rdoc +++ b/doc/matchdata/offset.rdoc @@ -11,12 +11,12 @@ returns the starting and ending offsets of the nth match: m[3] # => "113" m.offset(3) # => [3, 6] - m = /(т)(е)(с)/.match('тест') - # => # - m[0] # => "тес" - m.offset(0) # => [0, 3] - m[3] # => "с" - m.offset(3) # => [2, 3] + m = /(ん)(に)(ち)/.match('こんにちは') + # => # + m[0] # => "んにち" + m.offset(0) # => [1, 4] + m[3] # => "ち" + m.offset(3) # => [3, 4] When string or symbol argument +name+ is given, returns the starting and ending offsets for the named match: From 9e78353c0f840bf4aa7cceb4d1676f4d090d0096 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Sun, 28 Dec 2025 15:43:36 -0500 Subject: [PATCH 2/2] Fix maybe uninitialized warnings in random.c Fixes the following compiler warnings: random.c: In function `random_init`: random.c:416:38: warning: `rng` may be used uninitialized in this function [-Wmaybe-uninitialized] 416 | unsigned int major = rng->version.major; | ~~~~~~~~~~~~^~~~~~ random.c: In function `random_bytes`: random.c:1284:8: warning: `rng` may be used uninitialized in this function [-Wmaybe-uninitialized] 1284 | rng->get_bytes(rnd, ptr, n); | ~~~^~~~~~~~~~~ random.c:1299:34: note: `rng` was declared here 1299 | const rb_random_interface_t *rng; | ^~~ random.c: In function `rand_random_number`: random.c:1606:12: warning: `rng` may be used uninitialized in this function [-Wmaybe-uninitialized] 1606 | return rand_range(obj, rng, rnd, vmax); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ random.c:1624:34: note: `rng` was declared here 1624 | const rb_random_interface_t *rng; | ^~~ random.c: In function `random_rand`: random.c:1120:15: warning: `rng` may be used uninitialized in this function [-Wmaybe-uninitialized] 1120 | return rng->get_int32(rnd); | ~~~^~~~~~~~~~~ random.c:1573:34: note: `rng` was declared here 1573 | const rb_random_interface_t *rng; | ^~~ --- random.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/random.c b/random.c index d902603e98345a..ad7cbca426361c 100644 --- a/random.c +++ b/random.c @@ -405,7 +405,7 @@ rand_init(const rb_random_interface_t *rng, rb_random_t *rnd, VALUE seed) static VALUE random_init(int argc, VALUE *argv, VALUE obj) { - const rb_random_interface_t *rng; + const rb_random_interface_t *rng = NULL; rb_random_t *rnd = try_get_rnd(obj, &rng); if (!rng) { @@ -1296,7 +1296,7 @@ rand_bytes(const rb_random_interface_t *rng, rb_random_t *rnd, long n) static VALUE random_bytes(VALUE obj, VALUE len) { - const rb_random_interface_t *rng; + const rb_random_interface_t *rng = NULL; rb_random_t *rnd = try_get_rnd(obj, &rng); return rand_bytes(rng, rnd, NUM2LONG(rb_to_int(len))); } @@ -1570,7 +1570,7 @@ static VALUE rand_random(int argc, VALUE *argv, VALUE obj, const rb_random_inter static VALUE random_rand(int argc, VALUE *argv, VALUE obj) { - const rb_random_interface_t *rng; + const rb_random_interface_t *rng = NULL; rb_random_t *rnd = try_get_rnd(obj, &rng); VALUE v = rand_random(argc, argv, obj, rng, rnd); check_random_number(v, argv); @@ -1621,7 +1621,7 @@ rand_random(int argc, VALUE *argv, VALUE obj, const rb_random_interface_t *rng, static VALUE rand_random_number(int argc, VALUE *argv, VALUE obj) { - const rb_random_interface_t *rng; + const rb_random_interface_t *rng = NULL; rb_random_t *rnd = try_get_rnd(obj, &rng); VALUE v = rand_random(argc, argv, obj, rng, rnd); if (NIL_P(v)) v = rand_random(0, 0, obj, rng, rnd);