diff options
| author | 2023-09-22 16:51:48 -0400 | |
|---|---|---|
| committer | 2023-09-22 16:51:48 -0400 | |
| commit | 5269a463999be77bedff2c8c3e4cf0ceedc6f631 (patch) | |
| tree | d7d325e521d79806b446da4a1877b19b16894523 | |
| parent | Merge pull request #11572 from t895/import-heuristic (diff) | |
| download | yuzu-5269a463999be77bedff2c8c3e4cf0ceedc6f631.tar.gz yuzu-5269a463999be77bedff2c8c3e4cf0ceedc6f631.tar.xz yuzu-5269a463999be77bedff2c8c3e4cf0ceedc6f631.zip | |
android: Use smaller read buffer size for exporting user data
The File.readBytes() extension attempts to load an entire file into a byte array. This would cause crashes when loading huge files into memory.
| -rw-r--r-- | src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt index 54993a958..6fa847631 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt | |||
| @@ -50,6 +50,7 @@ import org.yuzu.yuzu_emu.model.TaskViewModel | |||
| 50 | import org.yuzu.yuzu_emu.utils.* | 50 | import org.yuzu.yuzu_emu.utils.* |
| 51 | import java.io.BufferedInputStream | 51 | import java.io.BufferedInputStream |
| 52 | import java.io.BufferedOutputStream | 52 | import java.io.BufferedOutputStream |
| 53 | import java.io.FileInputStream | ||
| 53 | import java.io.FileOutputStream | 54 | import java.io.FileOutputStream |
| 54 | import java.util.zip.ZipEntry | 55 | import java.util.zip.ZipEntry |
| 55 | import java.util.zip.ZipInputStream | 56 | import java.util.zip.ZipInputStream |
| @@ -639,7 +640,15 @@ class MainActivity : AppCompatActivity(), ThemeProvider { | |||
| 639 | file.path.length | 640 | file.path.length |
| 640 | ) | 641 | ) |
| 641 | stream.putNextEntry(ZipEntry(newPath)) | 642 | stream.putNextEntry(ZipEntry(newPath)) |
| 642 | stream.write(file.readBytes()) | 643 | |
| 644 | val buffer = ByteArray(8096) | ||
| 645 | var read: Int | ||
| 646 | FileInputStream(file).use { fis -> | ||
| 647 | while (fis.read(buffer).also { read = it } != -1) { | ||
| 648 | stream.write(buffer, 0, read) | ||
| 649 | } | ||
| 650 | } | ||
| 651 | |||
| 643 | stream.closeEntry() | 652 | stream.closeEntry() |
| 644 | } | 653 | } |
| 645 | } | 654 | } |