Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1683)

Unified Diff: sdk/lib/io/file_impl.dart

Issue 1156993003: Fix argument processing for RandomAccessFile.writeFrom (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Addressed review comments Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sdk/lib/io/file.dart ('k') | tests/standalone/io/file_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/io/file_impl.dart
diff --git a/sdk/lib/io/file_impl.dart b/sdk/lib/io/file_impl.dart
index 2dac1b84d7e65a741a43b8423456b621fc2807ab..b84a078f134ded885392863e58362568ad6f44ce 100644
--- a/sdk/lib/io/file_impl.dart
+++ b/sdk/lib/io/file_impl.dart
@@ -347,23 +347,25 @@ class _File extends FileSystemEntity implements File {
mode != FileMode.APPEND) {
return new Future.error(new ArgumentError());
}
- return _IOService._dispatch(_FILE_OPEN, [path, mode._mode]).then((response) {
- if (_isErrorResponse(response)) {
- throw _exceptionFromResponse(response, "Cannot open file", path);
- }
- return new _RandomAccessFile(response, path);
- });
+ return _IOService._dispatch(_FILE_OPEN, [path, mode._mode])
+ .then((response) {
+ if (_isErrorResponse(response)) {
+ throw _exceptionFromResponse(response, "Cannot open file", path);
+ }
+ return new _RandomAccessFile(response, path);
+ });
}
Future<int> length() {
- return _IOService._dispatch(_FILE_LENGTH_FROM_PATH, [path]).then((response) {
- if (_isErrorResponse(response)) {
- throw _exceptionFromResponse(response,
- "Cannot retrieve length of file",
- path);
- }
- return response;
- });
+ return _IOService._dispatch(_FILE_LENGTH_FROM_PATH, [path])
+ .then((response) {
+ if (_isErrorResponse(response)) {
+ throw _exceptionFromResponse(response,
+ "Cannot retrieve length of file",
+ path);
+ }
+ return response;
+ });
}
@@ -688,14 +690,14 @@ class _RandomAccessFile
return result;
}
- Future<int> readInto(List<int> buffer, [int start, int end]) {
+ Future<int> readInto(List<int> buffer, [int start = 0, int end]) {
if (buffer is !List ||
(start != null && start is !int) ||
(end != null && end is !int)) {
throw new ArgumentError();
}
- if (start == null) start = 0;
- if (end == null) end = buffer.length;
+ end = RangeError.checkValidRange(start, end, buffer.length);
+ if (end == start) return 0;
int length = end - start;
return _dispatch(_FILE_READ_INTO, [_id, length]).then((response) {
if (_isErrorResponse(response)) {
@@ -710,23 +712,17 @@ class _RandomAccessFile
});
}
- static void _checkReadWriteListArguments(int length, int start, int end) {
- RangeError.checkValidRange(start, end, length);
- }
-
external static _readInto(int id, List<int> buffer, int start, int end);
- int readIntoSync(List<int> buffer, [int start, int end]) {
+ int readIntoSync(List<int> buffer, [int start = 0, int end]) {
_checkAvailable();
if (buffer is !List ||
(start != null && start is !int) ||
(end != null && end is !int)) {
throw new ArgumentError();
}
- if (start == null) start = 0;
- if (end == null) end = buffer.length;
+ end = RangeError.checkValidRange(start, end, buffer.length);
if (end == start) return 0;
- _checkReadWriteListArguments(buffer.length, start, end);
var result = _readInto(_id, buffer, start, end);
if (result is OSError) {
throw new FileSystemException("readInto failed", path, result);
@@ -766,13 +762,15 @@ class _RandomAccessFile
return result;
}
- Future<RandomAccessFile> writeFrom(List<int> buffer, [int start, int end]) {
- if ((buffer is !List && buffer is !ByteData) ||
+ Future<RandomAccessFile> writeFrom(
+ List<int> buffer, [int start = 0, int end]) {
+ if ((buffer is !List) ||
(start != null && start is !int) ||
(end != null && end is !int)) {
throw new ArgumentError("Invalid arguments to writeFrom");
}
-
+ end = RangeError.checkValidRange(start, end, buffer.length);
+ if (end == start) return;
_BufferAndStart result;
try {
result = _ensureFastAndSerializableByteData(buffer, start, end);
@@ -797,17 +795,15 @@ class _RandomAccessFile
external static _writeFrom(int id, List<int> buffer, int start, int end);
- void writeFromSync(List<int> buffer, [int start, int end]) {
+ void writeFromSync(List<int> buffer, [int start = 0, int end]) {
_checkAvailable();
if (buffer is !List ||
(start != null && start is !int) ||
(end != null && end is !int)) {
throw new ArgumentError("Invalid arguments to writeFromSync");
}
- if (start == null) start = 0;
- if (end == null) end = buffer.length;
+ end = RangeError.checkValidRange(start, end, buffer.length);
if (end == start) return;
- _checkReadWriteListArguments(buffer.length, start, end);
_BufferAndStart bufferAndStart =
_ensureFastAndSerializableByteData(buffer, start, end);
var result = _writeFrom(_id,
« no previous file with comments | « sdk/lib/io/file.dart ('k') | tests/standalone/io/file_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698