backports 3.6.4 → 3.6.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9aa6079dcd8824dcc4ed7d89341ba81ae14ee1f2
4
+ data.tar.gz: 25c6fa54364e18de597fadf27de457c591ce6d17
5
+ SHA512:
6
+ metadata.gz: 4e5c84c312e0716a1283d93277d04ee8de3d62527c95eb5fa83a7a7c6b99ba05a832df0d696675597a502b8b41b63a01423af484b1f2ca135a9654ab0f54db85
7
+ data.tar.gz: 688e1bd667a6e5486e1e11a681e5e18b8004396af20c56c6b1e5a1c5258710b5a5b2562afd514e287b9eec7d8ba9ea104e21e9775984a02dd3829a3403ebb618
@@ -7,7 +7,7 @@ GIT
7
7
  PATH
8
8
  remote: .
9
9
  specs:
10
- backports (3.6.4)
10
+ backports (3.6.5)
11
11
 
12
12
  GEM
13
13
  remote: http://rubygems.org/
@@ -11,6 +11,7 @@ Gem::Specification.new do |gem|
11
11
  gem.description = %q{Essential backports that enable many of the nice features of Ruby 1.8.7 up to 2.1.0 for earlier versions.}
12
12
  gem.summary = %q{Backports of Ruby features for older Ruby.}
13
13
  gem.homepage = "http://github.com/marcandre/backports"
14
+ gem.license = "MIT"
14
15
 
15
16
  gem.files = `git ls-files`.split($/)
16
17
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -2,14 +2,16 @@ unless Bignum.method_defined? :bit_length
2
2
  require 'backports/2.0.0/range/bsearch'
3
3
  class Bignum
4
4
  def bit_length
5
- n = 8 * (size - 42.size)
5
+ # We use the fact that bignums use the minimum number of bytes necessary
6
+ # So we have (size - 1) * 8 < bit_length <= size * 8
7
+ n = 8 * (size - 1)
6
8
  smaller = self >> n
7
9
  if smaller >= 0
8
10
  smaller += 1
9
11
  else
10
12
  smaller = -smaller
11
13
  end
12
- n + (0...8 * 42.size).bsearch{|i| smaller <= (1 << i) }
14
+ n + (1..8).bsearch{|i| smaller <= (1 << i) }
13
15
  end
14
16
  end
15
17
  end
@@ -1,3 +1,3 @@
1
1
  module Backports
2
- VERSION = "3.6.4" unless const_defined? :VERSION # the guard is against a redefinition warning that happens on Travis
2
+ VERSION = "3.6.5" unless const_defined? :VERSION # the guard is against a redefinition warning that happens on Travis
3
3
  end
@@ -0,0 +1,11 @@
1
+ require './test/test_helper'
2
+
3
+ class BitLengthTest < Test::Unit::TestCase
4
+ def test_big_num # Issue #95
5
+ require 'backports/2.1.0/bignum/bit_length'
6
+ r = 91178362617816881166579720176198217549251305244541026425489888079462471837807
7
+ assert_equal 256, r.bit_length
8
+ r = 57896044618658097711785492504343953926634992332820282019728792003956564819968
9
+ assert_equal 256, r.bit_length
10
+ end
11
+ end
metadata CHANGED
@@ -1,38 +1,28 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: backports
3
- version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease:
6
- segments:
7
- - 3
8
- - 6
9
- - 4
10
- version: 3.6.4
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.6.5
11
5
  platform: ruby
12
- authors:
13
- - "Marc-Andr\xC3\xA9 Lafortune"
6
+ authors:
7
+ - Marc-André Lafortune
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2014-11-13 00:00:00 Z
11
+ date: 2015-07-13 00:00:00.000000000 Z
19
12
  dependencies: []
20
-
21
- description: Essential backports that enable many of the nice features of Ruby 1.8.7 up to 2.1.0 for earlier versions.
22
- email:
13
+ description: Essential backports that enable many of the nice features of Ruby 1.8.7
14
+ up to 2.1.0 for earlier versions.
15
+ email:
23
16
  - github@marc-andre.ca
24
17
  executables: []
25
-
26
18
  extensions: []
27
-
28
19
  extra_rdoc_files: []
29
-
30
- files:
31
- - .document
32
- - .gitignore
33
- - .gitmodules
34
- - .irbrc
35
- - .travis.yml
20
+ files:
21
+ - ".document"
22
+ - ".gitignore"
23
+ - ".gitmodules"
24
+ - ".irbrc"
25
+ - ".travis.yml"
36
26
  - CHANGELOG.rdoc
37
27
  - Gemfile
38
28
  - Gemfile.lock
@@ -560,43 +550,35 @@ files:
560
550
  - spec/tags/1.9.2/core/io/write_spec.rb
561
551
  - test/README
562
552
  - test/_backport_guards_test.rb
553
+ - test/bit_length_test.rb
563
554
  - test/lazy_test.rb
564
555
  - test/socket_interaction_test.rb
565
556
  - test/test_helper.rb
566
557
  homepage: http://github.com/marcandre/backports
567
- licenses: []
568
-
558
+ licenses:
559
+ - MIT
560
+ metadata: {}
569
561
  post_install_message:
570
562
  rdoc_options: []
571
-
572
- require_paths:
563
+ require_paths:
573
564
  - lib
574
- required_ruby_version: !ruby/object:Gem::Requirement
575
- none: false
576
- requirements:
565
+ required_ruby_version: !ruby/object:Gem::Requirement
566
+ requirements:
577
567
  - - ">="
578
- - !ruby/object:Gem::Version
579
- hash: 3
580
- segments:
581
- - 0
582
- version: "0"
583
- required_rubygems_version: !ruby/object:Gem::Requirement
584
- none: false
585
- requirements:
568
+ - !ruby/object:Gem::Version
569
+ version: '0'
570
+ required_rubygems_version: !ruby/object:Gem::Requirement
571
+ requirements:
586
572
  - - ">="
587
- - !ruby/object:Gem::Version
588
- hash: 3
589
- segments:
590
- - 0
591
- version: "0"
573
+ - !ruby/object:Gem::Version
574
+ version: '0'
592
575
  requirements: []
593
-
594
576
  rubyforge_project:
595
- rubygems_version: 1.8.25
577
+ rubygems_version: 2.4.5
596
578
  signing_key:
597
- specification_version: 3
579
+ specification_version: 4
598
580
  summary: Backports of Ruby features for older Ruby.
599
- test_files:
581
+ test_files:
600
582
  - spec/tags/1.8.6/core/argf/each_line_spec.rb
601
583
  - spec/tags/1.8.6/core/argf/each_spec.rb
602
584
  - spec/tags/1.8.6/core/argf/lines_spec.rb
@@ -711,6 +693,7 @@ test_files:
711
693
  - spec/tags/1.9.2/core/io/write_spec.rb
712
694
  - test/README
713
695
  - test/_backport_guards_test.rb
696
+ - test/bit_length_test.rb
714
697
  - test/lazy_test.rb
715
698
  - test/socket_interaction_test.rb
716
699
  - test/test_helper.rb