mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	rdoc/text.rb: fix infinite loop
* lib/rdoc/text.rb (expand_tabs): get rid of infinite loop with CR. should check if substitution occurred too. [ruby-dev:48813] [Bug #10732] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49223 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									a11e25432b
								
							
						
					
					
						commit
						77f3125567
					
				
					 3 changed files with 11 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -1,3 +1,9 @@
 | 
			
		|||
Mon Jan 12 18:01:24 2015  Nobuyoshi Nakada  <nobu@ruby-lang.org>
 | 
			
		||||
 | 
			
		||||
	* lib/rdoc/text.rb (expand_tabs): get rid of infinite loop with
 | 
			
		||||
	  CR.  should check if substitution occurred too.
 | 
			
		||||
	  [ruby-dev:48813] [Bug #10732]
 | 
			
		||||
 | 
			
		||||
Mon Jan 12 16:45:46 2015  Seiei Higa  <hanachin@gmail.com>
 | 
			
		||||
 | 
			
		||||
	* vm_method.c (rb_alias): raise a NameError when creating alias to
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,11 +68,11 @@ module RDoc::Text
 | 
			
		|||
    expanded = []
 | 
			
		||||
 | 
			
		||||
    text.each_line do |line|
 | 
			
		||||
      line.gsub!(/^((?:.{8})*?)([^\t\r\n]{0,7})\t/) do
 | 
			
		||||
      nil while line.gsub!(/(?:\G|\r)((?:.{8})*?)([^\t\r\n]{0,7})\t/) do
 | 
			
		||||
        r = "#{$1}#{$2}#{' ' * (8 - $2.size)}"
 | 
			
		||||
        r.force_encoding text.encoding if Object.const_defined? :Encoding
 | 
			
		||||
        r
 | 
			
		||||
      end until line !~ /\t/
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      expanded << line
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -56,6 +56,9 @@ class TestRDocText < RDoc::TestCase
 | 
			
		|||
 | 
			
		||||
    assert_equal('.               .',
 | 
			
		||||
                 expand_tabs(".\t\t."), 'dot tab tab dot')
 | 
			
		||||
 | 
			
		||||
    assert_equal('a       a',
 | 
			
		||||
                 Timeout.timeout(1) {expand_tabs("\ra\ta")}, "carriage return")
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_expand_tabs_encoding
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue