From 69fcca2d4564f706fa41280895e3a20d81740598 Mon Sep 17 00:00:00 2001
From: Raymond <raymond@k3n.nl>
Date: Sat, 22 Oct 2022 11:23:20 +0200
Subject: [PATCH] Remove deleted repos from searchresult (#21512)

This prevents a 500 response, because null pointer exceptions in
rendering the template.
This happends bc the repoId is not in the repoMap because it is delete

fix #19076

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
---
 routers/web/explore/code.go | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/routers/web/explore/code.go b/routers/web/explore/code.go
index 2357b34fd0..38474255d1 100644
--- a/routers/web/explore/code.go
+++ b/routers/web/explore/code.go
@@ -110,6 +110,18 @@ func Code(ctx *context.Context) {
 		}
 
 		ctx.Data["RepoMaps"] = repoMaps
+
+		if len(loadRepoIDs) != len(repoMaps) {
+			// Remove deleted repos from search results
+			cleanedSearchResults := make([]*code_indexer.Result, 0, len(repoMaps))
+			for _, sr := range searchResults {
+				if _, found := repoMaps[sr.RepoID]; found {
+					cleanedSearchResults = append(cleanedSearchResults, sr)
+				}
+			}
+
+			searchResults = cleanedSearchResults
+		}
 	}
 
 	ctx.Data["SearchResults"] = searchResults