From 182a5d5adae8e10adf041c4e1babe032e07ccaa9 Mon Sep 17 00:00:00 2001 From: Andrew Thornton Date: Sun, 3 Mar 2019 18:03:32 +0000 Subject: [PATCH 1/2] Prevent double-close of issues --- models/issue.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/models/issue.go b/models/issue.go index 503ff32b8ea6d..c654ba2137008 100644 --- a/models/issue.go +++ b/models/issue.go @@ -699,8 +699,14 @@ func UpdateIssueCols(issue *Issue, cols ...string) error { } func (issue *Issue) changeStatus(e *xorm.Session, doer *User, isClosed bool) (err error) { + // Reload the issue + currentIssue, err := getIssueByID(e, issue.ID) + if err != nil { + return err + } + // Nothing should be performed if current status is same as target status - if issue.IsClosed == isClosed { + if issue.IsClosed == isClosed || currentIssue.IsClosed == isClosed { return nil } From efc7034f68e44b0a3dfbe28d0e822dcb9c6a7b85 Mon Sep 17 00:00:00 2001 From: Lauris BH Date: Sun, 3 Mar 2019 22:51:15 +0000 Subject: [PATCH 2/2] Update models/issue.go Co-Authored-By: zeripath --- models/issue.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/issue.go b/models/issue.go index c654ba2137008..396c029d460cf 100644 --- a/models/issue.go +++ b/models/issue.go @@ -706,7 +706,7 @@ func (issue *Issue) changeStatus(e *xorm.Session, doer *User, isClosed bool) (er } // Nothing should be performed if current status is same as target status - if issue.IsClosed == isClosed || currentIssue.IsClosed == isClosed { + if currentIssue.IsClosed == isClosed { return nil }