[前][次][番号順一覧][スレッド一覧]

ruby-changes:6833

From: shyouhei <ko1@a...>
Date: Mon, 4 Aug 2008 14:21:12 +0900 (JST)
Subject: [ruby-changes:6833] Ruby:r18349 (ruby_1_8_7): merge revision(s) 18220:

shyouhei	2008-08-04 14:21:05 +0900 (Mon, 04 Aug 2008)

  New Revision: 18349

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=18349

  Log:
    merge revision(s) 18220:
    * lib/webrick/httputils.rb (WEBrick::HTTPUtils#split_header_value):
      reduce backtrack.  based on a fix by Christian Neukirchen
      <chneukirchen AT gmail.com>.

  Modified files:
    branches/ruby_1_8_7/lib/webrick/httputils.rb
    branches/ruby_1_8_7/version.h

Index: ruby_1_8_7/version.h
===================================================================
--- ruby_1_8_7/version.h	(revision 18348)
+++ ruby_1_8_7/version.h	(revision 18349)
@@ -2,7 +2,7 @@
 #define RUBY_RELEASE_DATE "2008-08-04"
 #define RUBY_VERSION_CODE 187
 #define RUBY_RELEASE_CODE 20080804
-#define RUBY_PATCHLEVEL 68
+#define RUBY_PATCHLEVEL 69
 
 #define RUBY_VERSION_MAJOR 1
 #define RUBY_VERSION_MINOR 8
Index: ruby_1_8_7/lib/webrick/httputils.rb
===================================================================
--- ruby_1_8_7/lib/webrick/httputils.rb	(revision 18348)
+++ ruby_1_8_7/lib/webrick/httputils.rb	(revision 18349)
@@ -23,16 +23,8 @@
       ret = path.dup
 
       ret.gsub!(%r{/+}o, '/')                    # //      => /
-      while ret.sub!(%r{/\.(/|\Z)}o, '/'); end   # /.      => /
-      begin                                      # /foo/.. => /foo
-        match = ret.sub!(%r{/([^/]+)/\.\.(/|\Z)}o){
-          if $1 == ".."
-            raise "abnormal path `#{path}'"
-          else
-            "/"
-          end
-        }
-      end while match
+      while ret.sub!(%r'/\.(?:/|\Z)', '/'); end  # /.      => /
+      while ret.sub!(%r'/(?!\.\./)[^/]+/\.\.(?:/|\Z)', '/'); end # /foo/.. => /foo
 
       raise "abnormal path `#{path}'" if %r{/\.\.(/|\Z)} =~ ret
       ret
@@ -154,8 +146,8 @@
     module_function :parse_header
 
     def split_header_value(str)
-      str.scan(/((?:"(?:\\.|[^"])+?"|[^",]+)+)
-                (?:,\s*|\Z)/xn).collect{|v| v[0] }
+      str.scan(%r'\G((?:"(?:\\.|[^"])+?"|[^",]+)+)
+                    (?:,\s*|\Z)'xn).flatten
     end
     module_function :split_header_value
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]