Procházet zdrojové kódy

Data race: broken locking on model.folderIgnores

Jakob Borg před 11 roky
rodič
revize
7f829f0159
1 změnil soubory, kde provedl 5 přidání a 2 odebrání
  1. 5 2
      internal/model/model.go

+ 5 - 2
internal/model/model.go

@@ -779,10 +779,12 @@ func (m *Model) GetIgnores(folder string) ([]string, []string, error) {
 		lines = append(lines, strings.TrimSpace(scanner.Text()))
 	}
 
+	m.fmut.RLock()
 	var patterns []string
 	if matcher := m.folderIgnores[folder]; matcher != nil {
 		patterns = matcher.Patterns()
 	}
+	m.fmut.RUnlock()
 
 	return lines, patterns, nil
 }
@@ -1050,7 +1052,7 @@ func (m *Model) ScanFolderSub(folder, sub string) error {
 		return errors.New("invalid subpath")
 	}
 
-	m.fmut.RLock()
+	m.fmut.Lock()
 	fs, ok := m.folderFiles[folder]
 	dir := m.folderCfgs[folder].Path
 
@@ -1066,7 +1068,8 @@ func (m *Model) ScanFolderSub(folder, sub string) error {
 		CurrentFiler: cFiler{m, folder},
 		IgnorePerms:  m.folderCfgs[folder].IgnorePerms,
 	}
-	m.fmut.RUnlock()
+	m.fmut.Unlock()
+
 	if !ok {
 		return errors.New("no such folder")
 	}