Skip to content

Commit

Permalink
bind xattr value memory segment to arena
Browse files Browse the repository at this point in the history
  • Loading branch information
infeo committed Aug 15, 2023
1 parent 1446788 commit d1b64cf
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions jfuse-win/src/main/java/org/cryptomator/jfuse/win/FuseImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -206,22 +206,24 @@ int getattr(MemorySegment path, MemorySegment stat, MemorySegment fi) {
@VisibleForTesting
int getxattr(MemorySegment path, MemorySegment name, MemorySegment value, long size) {
try (var arena = Arena.ofConfined()) {
return fuseOperations.getxattr(path.getUtf8String(0), name.getUtf8String(0), value.asSlice(0, size).asByteBuffer());
var val = value.reinterpret(size, arena, null).asByteBuffer();
return fuseOperations.getxattr(path.getUtf8String(0), name.getUtf8String(0), val);
}
}

@VisibleForTesting
int setxattr(MemorySegment path, MemorySegment name, MemorySegment value, long size, int flags) {
try (var arena = Arena.ofConfined()) {

return fuseOperations.setxattr(path.getUtf8String(0), name.getUtf8String(0), value.asSlice(0, size).asByteBuffer(), flags);
var val = value.reinterpret(size, arena, null).asByteBuffer();
return fuseOperations.setxattr(path.getUtf8String(0), name.getUtf8String(0), val, flags);
}
}

@VisibleForTesting
int listxattr(MemorySegment path, MemorySegment value, long size) {
try (var arena = Arena.ofConfined()) {
return fuseOperations.listxattr(path.getUtf8String(0), value.asSlice(0, size).asByteBuffer());
var val = value.reinterpret(size, arena, null).asByteBuffer();
return fuseOperations.listxattr(path.getUtf8String(0), val);
}
}

Expand All @@ -248,8 +250,7 @@ private int opendir(MemorySegment path, MemorySegment fi) {

private int read(MemorySegment path, MemorySegment buf, long size, long offset, MemorySegment fi) {
try (var arena = Arena.ofConfined()) {

var buffer = buf.reinterpret(size,arena,null).asByteBuffer();
var buffer = buf.reinterpret(size, arena, null).asByteBuffer();
return fuseOperations.read(path.getUtf8String(0), buffer, size, offset, new FileInfoImpl(fi, arena));
}
}
Expand All @@ -262,7 +263,7 @@ private int readdir(MemorySegment path, MemorySegment buf, MemorySegment filler,

private int readlink(MemorySegment path, MemorySegment buf, long len) {
try (var arena = Arena.ofConfined()) {
var buffer = buf.reinterpret(len,arena,null).asByteBuffer();
var buffer = buf.reinterpret(len, arena, null).asByteBuffer();
return fuseOperations.readlink(path.getUtf8String(0), buffer, len);
}
}
Expand Down Expand Up @@ -323,7 +324,7 @@ int utimens(MemorySegment path, MemorySegment times, MemorySegment fi) {

private int write(MemorySegment path, MemorySegment buf, long size, long offset, MemorySegment fi) {
try (var arena = Arena.ofConfined()) {
var buffer = buf.reinterpret(size, arena,null).asByteBuffer();
var buffer = buf.reinterpret(size, arena, null).asByteBuffer();
return fuseOperations.write(path.getUtf8String(0), buffer, size, offset, new FileInfoImpl(fi, arena));
}
}
Expand Down

0 comments on commit d1b64cf

Please sign in to comment.