summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Charles Lombardo2023-09-22 16:51:48 -0400
committerGravatar Charles Lombardo2023-09-22 16:51:48 -0400
commit5269a463999be77bedff2c8c3e4cf0ceedc6f631 (patch)
treed7d325e521d79806b446da4a1877b19b16894523
parentMerge pull request #11572 from t895/import-heuristic (diff)
downloadyuzu-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.kt11
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
50import org.yuzu.yuzu_emu.utils.* 50import org.yuzu.yuzu_emu.utils.*
51import java.io.BufferedInputStream 51import java.io.BufferedInputStream
52import java.io.BufferedOutputStream 52import java.io.BufferedOutputStream
53import java.io.FileInputStream
53import java.io.FileOutputStream 54import java.io.FileOutputStream
54import java.util.zip.ZipEntry 55import java.util.zip.ZipEntry
55import java.util.zip.ZipInputStream 56import 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 }