[dartdev] Delete and create dylibs instead of truncate

TEST=Tested locally. Will add a test case upstream in dart-lang/native
     and roll that in.

Bug: https://github.com/dart-lang/native/issues/2921
Change-Id: I8010131cc70afe5bcee30edf076f18efe0c9a8c4
Cq-Include-Trybots: luci.dart.try:pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-win-release-try,pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-mac-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/471240
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
This commit is contained in:
Daco Harkes
2026-01-07 03:52:21 -08:00
committed by Commit Queue
parent 7b5bd07e87
commit 3e020921c6
@@ -164,7 +164,12 @@ extension on DataAsset {
extension on Uri {
Future<void> copyTo(Uri targetUri) async {
await File.fromUri(targetUri).create(recursive: true);
var targetFile = File.fromUri(targetUri);
// File.copy truncates. So, first to ensure that if it was dlopened it
// doesn't get truncated on disk.
// https://github.com/dart-lang/sdk/issues/62361
if (await targetFile.exists()) await targetFile.delete();
await targetFile.create(recursive: true);
await File.fromUri(this).copy(targetUri.toFilePath());
}
}