<AWT Dev> [OpenJDK 2D-Dev] [rfc]Stream doesn't reset mark in finally
Jiri Vanek
jvanek at redhat.com
Wed Nov 18 17:17:16 UTC 2015
On 11/12/2015 02:24 PM, Sergey Bylokhov wrote:
> Hi, Jiri.
> This is a valid point, did you file a new CR for this issue?
>
Hello!
here it is:
https://jvanek.fedorapeople.org/oracle/jdk8/webrevs/resetInTryFinally/v1/
Patch:
https://jvanek.fedorapeople.org/oracle/jdk8/webrevs/resetInTryFinally/v1/webrev/
and reprodcuer
https://jvanek.fedorapeople.org/oracle/jdk8/webrevs/resetInTryFinally/v1/MarkTryFinallyReproducer.java
Reproducer can be easily turned to jtreg if wonted.
The patch is for 8, but is valid also for 9, except the path to file.
I will adapt it to 9 once you are ok with it (or you may on your own, depends on you)
J.
> On 09.11.15 15:45, Alexander Scherbatiy wrote:
>> On 11/7/2015 11:38 AM, Jiri Vanek wrote:
>>> Hello!
>>>
>>> Looking to imageIO.java (if this is bad thread, please redirect me!)
>>
>> 2d-dev alias should be also the right place to ask image related
>> questions in AWT.
>>
>> Thanks,
>> Alexandr.
>>
>>> when reading images
>>> http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/javax/imageio/ImageIO.java#l543
>>>
>>>
>>> and ending at:
>>>
>>> // Perform mark/reset as a defensive measure
>>> // even though plug-ins are supposed to take
>>> // care of it.
>>> boolean canDecode = false;
>>> if (stream != null) {
>>> stream.mark();
>>> }
>>> canDecode = spi.canDecodeInput(input);
>>> if (stream != null) {
>>> stream.reset();
>>> }
>>> return canDecode;
>>>
>>> I'm wondering, why stream.reset(); is not in finaly block:
>>>
>>> // Perform mark/reset as a defensive measure
>>> // even though plug-ins are supposed to take
>>> // care of it.
>>> boolean canDecode = false;
>>> if (stream != null) {
>>> stream.mark();
>>> }
>>> try{
>>> canDecode = spi.canDecodeInput(input);
>>> } finally {
>>> if (stream != null) {
>>> stream.reset();
>>> }
>>> }
>>> return canDecode;
>>>
>>>
>>> Eg png and bmp decoders can are throwing IIOException when header is
>>> corrutped. That pretty definitely sure killer of stream mark stacks.
>>> You yourselves write : //Perform mark/reset as a defensive measure
>>> even though plug-ins are supposed to take care of it.
>>> So if densive, then try/finaly please.
>>>
>>> I did not check if this changed in 9 but if not....Please. This is
>>> makig work on custom image plugins, for image formats which just wraps
>>> another bmp/png and are expecting corrupted headers preatty hards.
>>>
>>>
>>> J.
>>
>
>
More information about the awt-dev
mailing list