diff --git a/.travis.yml b/.travis.yml index 4273865..40abedb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,7 @@ language: go go: - "1.13.x" + - "1.15.x" before_install: - sudo apt-get update diff --git a/btrfs.go b/btrfs.go index a055890..f9c30b3 100644 --- a/btrfs.go +++ b/btrfs.go @@ -275,7 +275,7 @@ func SubvolCreate(path string) error { if len(name) > C.BTRFS_PATH_NAME_MAX { return errors.Errorf("%q too long for subvolume", name) } - nameptr := (*[maxByteSliceSize]byte)(unsafe.Pointer(&args.name[0])) + nameptr := (*[maxByteSliceSize]byte)(unsafe.Pointer(&args.name[0]))[:C.BTRFS_PATH_NAME_MAX:C.BTRFS_PATH_NAME_MAX] copy(nameptr[:C.BTRFS_PATH_NAME_MAX], []byte(name)) if err := ioctl(fp.Fd(), C.BTRFS_IOC_SUBVOL_CREATE, uintptr(unsafe.Pointer(&args))); err != nil { @@ -311,7 +311,7 @@ func SubvolSnapshot(dst, src string, readonly bool) error { return errors.Errorf("%q too long for subvolume", dstname) } - nameptr := (*[maxByteSliceSize]byte)(unsafe.Pointer(name)) + nameptr := (*[maxByteSliceSize]byte)(unsafe.Pointer(name))[:C.BTRFS_SUBVOL_NAME_MAX:C.BTRFS_SUBVOL_NAME_MAX] copy(nameptr[:C.BTRFS_SUBVOL_NAME_MAX], []byte(dstname)) if readonly { @@ -370,7 +370,7 @@ func SubvolDelete(path string) error { return errors.Errorf("%q too long for subvolume", name) } - nameptr := (*[maxByteSliceSize]byte)(unsafe.Pointer(&args.name[0])) + nameptr := (*[maxByteSliceSize]byte)(unsafe.Pointer(&args.name[0]))[:C.BTRFS_SUBVOL_NAME_MAX:C.BTRFS_SUBVOL_NAME_MAX] copy(nameptr[:C.BTRFS_SUBVOL_NAME_MAX], []byte(name)) if err := ioctl(fp.Fd(), C.BTRFS_IOC_SNAP_DESTROY, uintptr(unsafe.Pointer(&args))); err != nil {