diff --git a/models/repo.go b/models/repo.go
index 3a1f14919..c79c52d68 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -1834,7 +1834,7 @@ type SearchRepoOptions struct {
 
 // SearchRepositoryByName takes keyword and part of repository name to search,
 // it returns results in given range and number of total results.
-func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, _ int64, _ error) {
+func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, count int64, err error) {
 	var (
 		sess *xorm.Session
 		cond = builder.NewCond()
@@ -1870,7 +1870,7 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, _ in
 		var ownerIds []int64
 
 		ownerIds = append(ownerIds, opts.Searcher.ID)
-		err := opts.Searcher.GetOrganizations(true)
+		err = opts.Searcher.GetOrganizations(true)
 
 		if err != nil {
 			return nil, 0, fmt.Errorf("Organization: %v", err)
@@ -1891,15 +1891,21 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, _ in
 		sess = x.
 			Join("INNER", "star", "star.repo_id = repository.id").
 			Where(cond)
+		count, err = x.
+			Join("INNER", "star", "star.repo_id = repository.id").
+			Where(cond).
+			Count(new(Repository))
+		if err != nil {
+			return nil, 0, fmt.Errorf("Count: %v", err)
+		}
 	} else {
 		sess = x.Where(cond)
-	}
-
-	var countSess xorm.Session
-	countSess = *sess
-	count, err := countSess.Count(new(Repository))
-	if err != nil {
-		return nil, 0, fmt.Errorf("Count: %v", err)
+		count, err = x.
+			Where(cond).
+			Count(new(Repository))
+		if err != nil {
+			return nil, 0, fmt.Errorf("Count: %v", err)
+		}
 	}
 
 	if err = sess.
@@ -1915,7 +1921,7 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, _ in
 		}
 	}
 
-	return repos, count, nil
+	return
 }
 
 // DeleteRepositoryArchives deletes all repositories' archives.