|  | @@ -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()
 |