Commit 8d83d934 authored by Mickaël Desfrênes's avatar Mickaël Desfrênes
Browse files

cleaner file close

parent 8d294cfe
Loading
Loading
Loading
Loading
+14 −15
Original line number Diff line number Diff line
@@ -2771,11 +2771,7 @@ func copyFile(src, dst string) error {
	if err != nil {
		return err
	}
	defer out.Close()
	if _, err := io.Copy(out, in); err != nil {
		return err
	}
	return out.Close()
	return copyAndClose(in, out)
}

func copyDir(src, dst string) error {
@@ -2836,16 +2832,14 @@ func extractZip(src, destination string) error {
		}
		out, err := os.OpenFile(cleanTarget, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, effectivePerm(f.Mode(), 0o644))
		if err != nil {
			in.Close()
			return err
			return errors.Join(err, in.Close())
		}
		if _, err := io.Copy(out, in); err != nil {
			out.Close()
			in.Close()
		if err := copyAndClose(in, out); err != nil {
			return errors.Join(err, in.Close())
		}
		if err := in.Close(); err != nil {
			return err
		}
		out.Close()
		in.Close()
	}
	return nil
}
@@ -2892,11 +2886,9 @@ func extractTarGz(src, destination string) error {
			if err != nil {
				return err
			}
			if _, err := io.Copy(out, tr); err != nil {
				out.Close()
			if err := copyAndClose(tr, out); err != nil {
				return err
			}
			out.Close()
		case tar.TypeSymlink:
			if err := os.MkdirAll(filepath.Dir(cleanTarget), 0o755); err != nil {
				return err
@@ -2931,3 +2923,10 @@ func effectivePerm(mode os.FileMode, fallback os.FileMode) os.FileMode {
	}
	return perm
}

func copyAndClose(in io.Reader, out *os.File) error {
	if _, err := io.Copy(out, in); err != nil {
		return errors.Join(err, out.Close())
	}
	return out.Close()
}