[ 
https://issues.apache.org/jira/browse/CB-13923?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16390265#comment-16390265
 ] 

ASF subversion and git services commented on CB-13923:
------------------------------------------------------

Commit e456a325f9dddcd938190daebd0568ed96753ea7 in cordova-android's branch 
refs/heads/master from [~anthony.ward]
[ https://gitbox.apache.org/repos/asf?p=cordova-android.git;h=e456a32 ]

CB-13923 (android) fix -1 length for compressed files


> CordovaResourceApi.java method OpenForReadResult returns a -1 length
> --------------------------------------------------------------------
>
>                 Key: CB-13923
>                 URL: https://issues.apache.org/jira/browse/CB-13923
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: cordova-android
>    Affects Versions: cordova-android-7.0.0
>         Environment: cordova 8.0.0
> cordova-android 7.0.0
> cordova-plugin-file 6.0.1
>            Reporter: Anthony Ward
>            Assignee: Joe Bowser
>            Priority: Major
>
> Here are details to recreate:
> [https://github.com/AnthonyWard/cordova-file-plugin-bug]
> In *cordova-android* the CordovaResourceApi.java -> OpenForReadResult method 
> returns a -1 length in certain circumstances.
> This has a knock on effect to the *cordova-plugin-file* > Filesystem.java > 
> readFileAtURL method, causing file corruption as each chunk effectively has 
> no end.
> There is a possible fix in the plugin cordova-plugin-file already proposed
> [https://github.com/apache/cordova-plugin-file/pull/217]
> https://issues.apache.org/jira/browse/CB-13245?jql=text%20~%20%22CordovaResourceApi%22
> Or I propose it could be fixed upstream in cordova-android here:
> [https://github.com/apache/cordova-android/blob/master/framework/src/org/apache/cordova/CordovaResourceApi.java]
> In the method OpenForReadResult there is one path (in the catch) that leaves 
> the length as -1 causing the defect
> try
> {
> assetFd = assetManager.openFd(assetPath);
> inputStream = assetFd.createInputStream(); length = assetFd.getLength();
> }
> catch (FileNotFoundException e)
> {
> // Will occur if the file is compressed.
> inputStream = assetManager.open(assetPath);
> }
> Adding length = inputStream.available(); in the catch fixes the issue for me, 
> but I'm not a java developer so can't evaluate if that's a bad idea for 
> another reason.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to