mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	Ensure result encoding is the same as input encoding for String#gsub. [Bug #4340].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30806 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									b1986003bd
								
							
						
					
					
						commit
						edaf78dfb6
					
				
					 3 changed files with 21 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -1,3 +1,8 @@
 | 
			
		|||
Sun Feb  6 12:46:02 2011  Eric Hodel  <drbrain@segment7.net>
 | 
			
		||||
 | 
			
		||||
	* string.c (gsub): Ensure result encoding is the same as input
 | 
			
		||||
	  encoding.  [Bug #4340].
 | 
			
		||||
 | 
			
		||||
Sun Feb  6 12:18:25 2011  Nobuyoshi Nakada  <nobu@ruby-lang.org>
 | 
			
		||||
 | 
			
		||||
	* parse.y (words, qwords): dispatch array events.  based on a
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								string.c
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								string.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -3745,6 +3745,7 @@ str_gsub(int argc, VALUE *argv, VALUE str, int bang)
 | 
			
		|||
    slen = RSTRING_LEN(str);
 | 
			
		||||
    cp = sp;
 | 
			
		||||
    str_enc = STR_ENC_GET(str);
 | 
			
		||||
    rb_enc_associate(dest, str_enc);
 | 
			
		||||
 | 
			
		||||
    do {
 | 
			
		||||
	n++;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -674,6 +674,21 @@ class TestString < Test::Unit::TestCase
 | 
			
		|||
    assert_raise(ArgumentError) { "foo".gsub }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_gsub_encoding
 | 
			
		||||
    a = S("hello world")
 | 
			
		||||
    a.force_encoding Encoding::UTF_8
 | 
			
		||||
 | 
			
		||||
    b = S("hi")
 | 
			
		||||
    b.force_encoding Encoding::US_ASCII
 | 
			
		||||
 | 
			
		||||
    assert_equal Encoding::UTF_8, a.gsub(/hello/, b).encoding
 | 
			
		||||
 | 
			
		||||
    c = S("everybody")
 | 
			
		||||
    c.force_encoding Encoding::US_ASCII
 | 
			
		||||
 | 
			
		||||
    assert_equal Encoding::UTF_8, a.gsub(/world/, c).encoding
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_gsub!
 | 
			
		||||
    a = S("hello")
 | 
			
		||||
    b = a.dup
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue