From e41cbe6fe1297d6c6b45b3d291cde0c7f588f786 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Mon, 21 Nov 2016 21:35:24 +0300 Subject: [PATCH] Check that the length of a file can be represented as Int. --- libraries/stdlib/src/kotlin/io/FileReadWrite.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/stdlib/src/kotlin/io/FileReadWrite.kt b/libraries/stdlib/src/kotlin/io/FileReadWrite.kt index 5a0011ad0fd..91f716f0962 100644 --- a/libraries/stdlib/src/kotlin/io/FileReadWrite.kt +++ b/libraries/stdlib/src/kotlin/io/FileReadWrite.kt @@ -51,7 +51,9 @@ public inline fun File.printWriter(charset: Charset = Charsets.UTF_8): PrintWrit */ public fun File.readBytes(): ByteArray = FileInputStream(this).use { input -> var offset = 0 - var remaining = this.length().toInt() // TODO: toIntExact() + var remaining = this.length().let { + if (it > Int.MAX_VALUE) throw OutOfMemoryError("File $this is too big ($it bytes) to fit in memory.") else it + }.toInt() val result = ByteArray(remaining) while (remaining > 0) { val read = input.read(result, offset, remaining)