forked from mirror/afero
[MemMap] Fix a data race
Signed-off-by: Anton Tiurin <noxiouz@yandex.ru>
This commit is contained in:
parent
0efc34d380
commit
5849bf9936
12
memmap.go
12
memmap.go
|
@ -78,10 +78,11 @@ func (MemMapFs) Name() string { return "MemMapFS" }
|
|||
|
||||
func (m *MemMapFs) Create(name string) (File, error) {
|
||||
m.lock()
|
||||
m.getData()[name] = MemFileCreate(name)
|
||||
file := MemFileCreate(name)
|
||||
m.getData()[name] = file
|
||||
m.unlock()
|
||||
m.registerDirs(m.getData()[name])
|
||||
return m.getData()[name], nil
|
||||
m.registerDirs(file)
|
||||
return file, nil
|
||||
}
|
||||
|
||||
func (m *MemMapFs) registerDirs(f File) {
|
||||
|
@ -139,9 +140,10 @@ func (m *MemMapFs) Mkdir(name string, perm os.FileMode) error {
|
|||
return ErrFileExists
|
||||
} else {
|
||||
m.lock()
|
||||
m.getData()[name] = &InMemoryFile{name: name, memDir: &MemDirMap{}, dir: true}
|
||||
item := &InMemoryFile{name: name, memDir: &MemDirMap{}, dir: true}
|
||||
m.getData()[name] = item
|
||||
m.unlock()
|
||||
m.registerDirs(m.getData()[name])
|
||||
m.registerDirs(item)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue