Преглед на файлове

fix panic when clear labels and Closes #16

Yoginth преди 7 години
родител
ревизия
605ac17f1c
променени са 1 файла, в които са добавени 7 реда и са изтрити 2 реда
  1. 7 2
      models/issue.go

+ 7 - 2
models/issue.go

@@ -311,8 +311,13 @@ func (issue *Issue) clearLabels(e *xorm.Session) (err error) {
 		return fmt.Errorf("getLabels: %v", err)
 	}
 
-	for len(issue.Labels) > 0 {
-		if err = issue.removeLabel(e, issue.Labels[0]); err != nil {
+	// NOTE: issue.removeLabel slices issue.Labels, so we need to create another slice to be unaffected.
+	labels := make([]*Label, len(issue.Labels))
+	for i := range issue.Labels {
+		labels[i] = issue.Labels[i]
+	}
+	for i := range labels {
+		if err = issue.removeLabel(e, labels[i]); err != nil {
 			return fmt.Errorf("removeLabel: %v", err)
 		}
 	}