[OpenJDK 2D-Dev] <AWT Dev> [rfc]Stream doesn't reset mark in finally
Jiri Vanek
jvanek at redhat.com
Tue Nov 24 09:17:29 UTC 2015
On 11/18/2015 06:17 PM, Jiri Vanek wrote:
> 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?
ping?
>>
>
> 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 2d-dev
mailing list