From 0d06c7e5f2f8239383a3727c69ef938d12c037e2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Justin=20Nu=C3=9F?= <nuss.justin@gmail.com>
Date: Tue, 22 Jul 2014 20:57:48 +0200
Subject: [PATCH] Prevent panic when dividing through zero

---
 models/issue.go | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/models/issue.go b/models/issue.go
index baf710a5eef..8b2d57cd222 100644
--- a/models/issue.go
+++ b/models/issue.go
@@ -19,6 +19,7 @@ var (
 	ErrIssueNotExist     = errors.New("Issue does not exist")
 	ErrLabelNotExist     = errors.New("Label does not exist")
 	ErrMilestoneNotExist = errors.New("Milestone does not exist")
+	ErrWrongIssueCounter = errors.New("Invalid number of issues for this milestone")
 )
 
 // Issue represents an issue or pull request of repository.
@@ -703,6 +704,11 @@ func ChangeMilestoneAssign(oldMid, mid int64, issue *Issue) (err error) {
 		if issue.IsClosed {
 			m.NumClosedIssues++
 		}
+
+		if m.NumIssues == 0 {
+			return ErrWrongIssueCounter
+		}
+
 		m.Completeness = m.NumClosedIssues * 100 / m.NumIssues
 		if _, err = sess.Id(m.Id).Update(m); err != nil {
 			sess.Rollback()