mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-25 17:52:02 +02:00
Fix various minor bugs in the copy folders function
This commit is contained in:
@@ -434,8 +434,7 @@ func CopyFolderContents(ctx context.Context, src_folder *os.File, dest_folder *o
|
|||||||
if v == nil {
|
if v == nil {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
item := v.Value.(*item)
|
item := queue.Remove(v).(*item)
|
||||||
|
|
||||||
if item.src_parent != nil {
|
if item.src_parent != nil {
|
||||||
item.src_parent.Unref()
|
item.src_parent.Unref()
|
||||||
}
|
}
|
||||||
@@ -446,6 +445,10 @@ func CopyFolderContents(ctx context.Context, src_folder *os.File, dest_folder *o
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
src, dest := NewRefCountedFile(src_folder), NewRefCountedFile(dest_folder)
|
src, dest := NewRefCountedFile(src_folder), NewRefCountedFile(dest_folder)
|
||||||
|
// Add an extra reference so that the files passed into this function are
|
||||||
|
// not closed in do_one()
|
||||||
|
src.NewRef()
|
||||||
|
dest.NewRef()
|
||||||
fail := func(err error) bool {
|
fail := func(err error) bool {
|
||||||
completed_channel <- err
|
completed_channel <- err
|
||||||
return false
|
return false
|
||||||
@@ -484,7 +487,7 @@ func CopyFolderContents(ctx context.Context, src_folder *os.File, dest_folder *o
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fail(err)
|
return fail(err)
|
||||||
}
|
}
|
||||||
df, err := OpenAt(dest.File(), child.Name())
|
df, err := CreateDirAt(dest.File(), child.Name(), child.Mode().Perm())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
sf.Close()
|
sf.Close()
|
||||||
return fail(err)
|
return fail(err)
|
||||||
|
|||||||
Reference in New Issue
Block a user