]> source.dussan.org Git - redmine.git/commitdiff
find_referenced_issue_by_id fails with RangeError for large numbers (#21071).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 29 Oct 2015 13:47:28 +0000 (13:47 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 29 Oct 2015 13:47:28 +0000 (13:47 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@14758 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/changeset.rb
test/unit/changeset_test.rb

index 13213f3abf86433ba5e34fc8ba70ebf7d895a039..ae42d414efd1d8007a3a470c556141ab0ea4bf2e 100644 (file)
@@ -200,7 +200,7 @@ class Changeset < ActiveRecord::Base
   # Finds an issue that can be referenced by the commit message
   def find_referenced_issue_by_id(id)
     return nil if id.blank?
-    issue = Issue.includes(:project).where(:id => id.to_i).first
+    issue = Issue.find_by_id(id.to_i)
     if Setting.commit_cross_project_ref?
       # all issues can be referenced/fixed
     elsif issue
index fbce05cd513f29443f6567079208795c805c458c..6ba02aa56597696cf10bd7ac861e5aa12d6c6a53 100644 (file)
@@ -165,6 +165,18 @@ class ChangesetTest < ActiveSupport::TestCase
     assert_equal [1,2,3], c.issue_ids.sort
   end
 
+  def test_ref_keywords_with_large_number_should_not_error
+    Setting.commit_ref_keywords = '*'
+    c = Changeset.new(:repository   => Project.find(1).repository,
+                      :committed_on => Time.now,
+                      :comments     => 'Out of range #2010021810000121',
+                      :revision     => '12345')
+    assert_nothing_raised do
+      assert c.save
+    end
+    assert_equal [], c.issue_ids.sort
+  end
+
   def test_update_keywords_with_changes_should_create_journal
     issue = Issue.generate!(:project_id => 1, :status_id => 1)