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.
This commit is contained in:
Charles Lombardo 2023-09-22 16:51:48 -04:00
parent 33e2dce715
commit 5269a46399

View File

@ -50,6 +50,7 @@ import org.yuzu.yuzu_emu.model.TaskViewModel
import org.yuzu.yuzu_emu.utils.* import org.yuzu.yuzu_emu.utils.*
import java.io.BufferedInputStream import java.io.BufferedInputStream
import java.io.BufferedOutputStream import java.io.BufferedOutputStream
import java.io.FileInputStream
import java.io.FileOutputStream import java.io.FileOutputStream
import java.util.zip.ZipEntry import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream import java.util.zip.ZipInputStream
@ -639,7 +640,15 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
file.path.length file.path.length
) )
stream.putNextEntry(ZipEntry(newPath)) stream.putNextEntry(ZipEntry(newPath))
stream.write(file.readBytes())
val buffer = ByteArray(8096)
var read: Int
FileInputStream(file).use { fis ->
while (fis.read(buffer).also { read = it } != -1) {
stream.write(buffer, 0, read)
}
}
stream.closeEntry() stream.closeEntry()
} }
} }