From 8ae989f6b6e92ac68257fa2d078a38c5561b0ee2 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 15 Sep 2014 01:29:21 +0000 Subject: pathname.rb: fix a Pathname#relative_path_from crash on * ext/pathname/lib/pathname.rb (SAME_PATHS): Pathname#relative_path_from uses String#casecmp to compare strings on case-insensitive filesystem platforms (e.g., Windows). This can return nil for strings with different encodings, and the code previously assumed that it always returned a Fixnum. [Fix GH-713] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47591 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/pathname/lib/pathname.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'ext/pathname/lib') diff --git a/ext/pathname/lib/pathname.rb b/ext/pathname/lib/pathname.rb index e61aa2c081..82541e9b15 100644 --- a/ext/pathname/lib/pathname.rb +++ b/ext/pathname/lib/pathname.rb @@ -22,7 +22,8 @@ class Pathname end SAME_PATHS = if File::FNM_SYSCASE.nonzero? - proc {|a, b| a.casecmp(b).zero?} + # Avoid #zero? here because #casecmp can return nil. + proc {|a, b| a.casecmp(b) == 0} else proc {|a, b| a == b} end -- cgit v1.2.3