Skip to content
This repository was archived by the owner on Mar 16, 2019. It is now read-only.

Commit 6ad1a14

Browse files
committed
Fix Android fs.slice() offset logic
1 parent cb859f9 commit 6ad1a14

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -535,11 +535,16 @@ static void ls(String path, Callback callback) {
535535
* @param start Start byte offset in source file
536536
* @param end End byte offset
537537
* @param encode
538-
* @param callback
539538
*/
540539
public static void slice(String src, String dest, int start, int end, String encode, Promise promise) {
541540
try {
542-
long expected = end - start;
541+
File source = new File(src);
542+
if(!source.exists()) {
543+
promise.reject("RNFetchBlob.slice error", "source file : " + src + " not exists");
544+
}
545+
long size = source.length();
546+
long max = Math.min(size, end);
547+
long expected = max - start;
543548
long now = 0;
544549
FileInputStream in = new FileInputStream(new File(src));
545550
FileOutputStream out = new FileOutputStream(new File(dest));
@@ -551,13 +556,8 @@ public static void slice(String src, String dest, int start, int end, String enc
551556
if(read <= 0) {
552557
break;
553558
}
554-
if(remain < 10240) {
555-
out.write(buffer, 0, (int) remain);
556-
}
557-
else
558-
out.write(buffer, 0, (int) read);
559+
out.write(buffer, 0, (int) Math.min(remain, read));
559560
now += read;
560-
561561
}
562562
in.close();
563563
out.flush();

0 commit comments

Comments
 (0)