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> | Sun Feb  6 12:18:25 2011  Nobuyoshi Nakada  <nobu@ruby-lang.org> | ||||||
| 
 | 
 | ||||||
| 	* parse.y (words, qwords): dispatch array events.  based on a | 	* 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); |     slen = RSTRING_LEN(str); | ||||||
|     cp = sp; |     cp = sp; | ||||||
|     str_enc = STR_ENC_GET(str); |     str_enc = STR_ENC_GET(str); | ||||||
|  |     rb_enc_associate(dest, str_enc); | ||||||
| 
 | 
 | ||||||
|     do { |     do { | ||||||
| 	n++; | 	n++; | ||||||
|  |  | ||||||
|  | @ -674,6 +674,21 @@ class TestString < Test::Unit::TestCase | ||||||
|     assert_raise(ArgumentError) { "foo".gsub } |     assert_raise(ArgumentError) { "foo".gsub } | ||||||
|   end |   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! |   def test_gsub! | ||||||
|     a = S("hello") |     a = S("hello") | ||||||
|     b = a.dup |     b = a.dup | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 drbrain
						drbrain