[ 
https://issues.apache.org/jira/browse/VFS-406?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Miroslav Pokorny updated VFS-406:
---------------------------------

    Attachment: ApacheVfsRamShrinkBugDemoTest.java

Hi Gary

Your commentary is correct, it is not possible to shrink a RAM file using
the unmodified API. I however needed to add the ability to shrink a RAM
file so i simply made RamFileObject.resize(int] public. After this i was
able to call it. I have demonstrated a simple TestCase below which uses
reflection to call the resize method, where upon an AIOOBE will be thrown.
My fix makes the resize or shrink work. At some future time perhaps you
might wish to make shrinking part of the public API and with this it will
work.





-- 
mP

                
> RAM FileSystem resize throws ArrayOOBE when shrinking in size.
> --------------------------------------------------------------
>
>                 Key: VFS-406
>                 URL: https://issues.apache.org/jira/browse/VFS-406
>             Project: Commons VFS
>          Issue Type: Bug
>    Affects Versions: 2.0
>            Reporter: Miroslav Pokorny
>         Attachments: ApacheVfsRamShrinkBugDemoTest.java
>
>   Original Estimate: 5m
>  Remaining Estimate: 5m
>
> Im targetting 2.0 as it is the official download.
> The fix is quite simple.
> FILE: RamFileObject
> ORIGINAL
>     void resize(int newSize)
>     {
>         int size = this.size();
>         byte[] newBuf = new byte[newSize];
>         System.arraycopy(this.buffer, 0, newBuf, 0, size);
>         this.buffer = newBuf;
>         updateLastModified();
>     }
> // when shrinking size > newSize thus an AOOBE will be thrown.
> FIXED
>     void resize(final int newSize) {
>         final int size = this.size();
>         final byte[] newBuf = new byte[newSize];
>         // HACK fixed error which prevented resizing to a small buffer.
>         System.arraycopy(this.buffer, 0, newBuf, 0, Math.min(newSize, size));
>         this.buffer = newBuf;
>         this.updateLastModified();
>     }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to