diff --git a/app/controllers/auto_completes_controller.rb b/app/controllers/auto_completes_controller.rb
index 021d5367b85f0b65e45cd022edffe983f0aadcbb..17d86f3469924c337590c7ece8d69353e5fdd08c 100644
--- a/app/controllers/auto_completes_controller.rb
+++ b/app/controllers/auto_completes_controller.rb
@@ -4,17 +4,18 @@ class AutoCompletesController < ApplicationController
   def issues
     @issues = []
     q = params[:q].to_s
-    query = (params[:scope] == "all" && Setting.cross_project_issue_relations?) ? Issue : @project.issues
-    if q.match(/^\d+$/)
-      @issues << query.visible.find_by_id(q.to_i)
-    end
-    unless q.blank?
-      @issues += query.visible.find(:all,
+
+    if q.present?
+      query = (params[:scope] == "all" && Setting.cross_project_issue_relations?) ? Issue : @project.issues
+
+      @issues |= query.visible.find_all_by_id(q.to_i) if q =~ /^\d+$/
+
+      @issues |= query.visible.find(:all,
                                     :limit => 10,
                                     :order => "#{Issue.table_name}.id ASC",
                                     :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE :q OR CAST(#{Issue.table_name}.id AS CHAR(13)) LIKE :q", {:q => "%#{q.downcase}%" }])
     end
-    @issues.compact!
+
     render :layout => false
   end
 
diff --git a/test/functional/auto_completes_controller_test.rb b/test/functional/auto_completes_controller_test.rb
index db246c30faca594425843aa7d5fdc3b4b6f5dd26..0cea1112d1e1f961c20b9eef0c6c1bea525580f2 100644
--- a/test/functional/auto_completes_controller_test.rb
+++ b/test/functional/auto_completes_controller_test.rb
@@ -20,19 +20,19 @@ class AutoCompletesControllerTest < ActionController::TestCase
   test 'should return issues matching a given id' do
     @project = Project.find('subproject1')
     @issue_21 = Issue.generate_for_project!(@project, :id => 21)
-    @issue_101 = Issue.generate_for_project!(@project, :id => 101)
-    @issue_102 = Issue.generate_for_project!(@project, :id => 102)
-    @issue_with_subject = Issue.generate_for_project!(@project, :subject => 'This has 1 in the subject')
+    @issue_2101 = Issue.generate_for_project!(@project, :id => 2101)
+    @issue_2102 = Issue.generate_for_project!(@project, :id => 2102)
+    @issue_with_subject = Issue.generate_for_project!(@project, :subject => 'This has 21 in the subject')
 
-    get :issues, :project_id => @project.id, :q => '1'
+    get :issues, :project_id => @project.id, :q => '21'
 
     assert_response :success
     assert_not_nil assigns(:issues)
-    assert assigns(:issues).include?(Issue.find(13))
     assert assigns(:issues).include?(@issue_21)
-    assert assigns(:issues).include?(@issue_101)
-    assert assigns(:issues).include?(@issue_102)
+    assert assigns(:issues).include?(@issue_2101)
+    assert assigns(:issues).include?(@issue_2102)
     assert assigns(:issues).include?(@issue_with_subject)
+    assert_equal assigns(:issues).size, assigns(:issues).uniq.size, "Issues list includes duplicates"
   end
   
   def test_auto_complete_with_scope_all_and_cross_project_relations