mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-09-26 01:44:15 +00:00
Fixed CryptoWritableFile errors when reading from moved file
* CryptoWritableFile no longer writes header with zero size if file is opened for writing * Refactored FileContentDecryptor: Using Supplier<Mac> instead of ThreadLocal<Mac> * Fixed InMemoryWritableFile: No longer open after moveTo
This commit is contained in:
+13
-3
@@ -47,11 +47,21 @@ public class InMemoryWritableFile implements WritableFile {
|
||||
@Override
|
||||
public void moveTo(WritableFile other) throws UncheckedIOException {
|
||||
if (other instanceof InMemoryWritableFile) {
|
||||
InMemoryWritableFile destination = (InMemoryWritableFile) other;
|
||||
internalMoveTo((InMemoryWritableFile) other);
|
||||
} else {
|
||||
throw new IllegalArgumentException("Can only move an InMemoryWritableFile to another InMemoryWritableFile");
|
||||
}
|
||||
}
|
||||
|
||||
private void internalMoveTo(InMemoryWritableFile destination) {
|
||||
try {
|
||||
destination.contentSetter.accept(this.contentGetter.get());
|
||||
destination.contentGetter.get().rewind();
|
||||
deleter.run();
|
||||
} finally {
|
||||
open = false;
|
||||
destination.open = false;
|
||||
}
|
||||
deleter.run();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -84,8 +94,8 @@ public class InMemoryWritableFile implements WritableFile {
|
||||
ByteBuffers.copy(old, destination);
|
||||
contentSetter.accept(destination);
|
||||
}
|
||||
destination.position(position);
|
||||
destination.limit(newFileSize);
|
||||
destination.position(position);
|
||||
int numWritten = ByteBuffers.copy(source, destination);
|
||||
this.position += numWritten;
|
||||
return numWritten;
|
||||
|
||||
Reference in New Issue
Block a user