Mercurial > hg > release > icedtea7-forest-2.0 > jdk
changeset 4587:cfe9f71da9f4 icedtea-2.0.1
Merge
author | andrew |
---|---|
date | Tue, 14 Feb 2012 14:01:11 +0000 |
parents | 43bf4d62a772 (diff) c705a1cdc132 (current diff) |
children | 891fb0050add |
files | |
diffstat | 15 files changed, 384 insertions(+), 181 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/com/sun/media/sound/DirectAudioDevice.java Fri Nov 11 15:17:51 2011 +0300 +++ b/src/share/classes/com/sun/media/sound/DirectAudioDevice.java Tue Feb 14 14:01:11 2012 +0000 @@ -736,7 +736,7 @@ if (off < 0) { throw new ArrayIndexOutOfBoundsException(off); } - if (off + len > b.length) { + if ((long)off + (long)len > (long)b.length) { throw new ArrayIndexOutOfBoundsException(b.length); } @@ -964,7 +964,7 @@ if (off < 0) { throw new ArrayIndexOutOfBoundsException(off); } - if (off + len > b.length) { + if ((long)off + (long)len > (long)b.length) { throw new ArrayIndexOutOfBoundsException(b.length); } if (!isActive() && doIO) {
--- a/src/share/classes/com/sun/media/sound/SoftMixingSourceDataLine.java Fri Nov 11 15:17:51 2011 +0300 +++ b/src/share/classes/com/sun/media/sound/SoftMixingSourceDataLine.java Tue Feb 14 14:01:11 2012 +0000 @@ -130,6 +130,12 @@ if (len % framesize != 0) throw new IllegalArgumentException( "Number of bytes does not represent an integral number of sample frames."); + if (off < 0) { + throw new ArrayIndexOutOfBoundsException(off); + } + if ((long)off + (long)len > (long)b.length) { + throw new ArrayIndexOutOfBoundsException(b.length); + } byte[] buff = cycling_buffer; int buff_len = cycling_buffer.length;
--- a/src/share/classes/java/awt/KeyboardFocusManager.java Fri Nov 11 15:17:51 2011 +0300 +++ b/src/share/classes/java/awt/KeyboardFocusManager.java Tue Feb 14 14:01:11 2012 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -503,14 +503,8 @@ */ protected Component getGlobalFocusOwner() throws SecurityException { synchronized (KeyboardFocusManager.class) { - if (this == getCurrentKeyboardFocusManager()) { - return focusOwner; - } else { - if (focusLog.isLoggable(PlatformLogger.FINER)) { - focusLog.finer("This manager is " + this + ", current is " + getCurrentKeyboardFocusManager()); - } - throw new SecurityException(notPrivileged); - } + checkCurrentKFMSecurity(); + return focusOwner; } } @@ -544,6 +538,8 @@ if (focusOwner == null || focusOwner.isFocusable()) { synchronized (KeyboardFocusManager.class) { + checkCurrentKFMSecurity(); + oldFocusOwner = getFocusOwner(); try { @@ -593,6 +589,9 @@ * @see java.awt.event.FocusEvent#FOCUS_LOST */ public void clearGlobalFocusOwner() { + synchronized (KeyboardFocusManager.class) { + checkCurrentKFMSecurity(); + } if (!GraphicsEnvironment.isHeadless()) { // Toolkit must be fully initialized, otherwise // _clearGlobalFocusOwner will crash or throw an exception @@ -672,14 +671,8 @@ throws SecurityException { synchronized (KeyboardFocusManager.class) { - if (this == getCurrentKeyboardFocusManager()) { - return permanentFocusOwner; - } else { - if (focusLog.isLoggable(PlatformLogger.FINER)) { - focusLog.finer("This manager is " + this + ", current is " + getCurrentKeyboardFocusManager()); - } - throw new SecurityException(notPrivileged); - } + checkCurrentKFMSecurity(); + return permanentFocusOwner; } } @@ -708,13 +701,14 @@ * @beaninfo * bound: true */ - protected void setGlobalPermanentFocusOwner(Component permanentFocusOwner) - { + protected void setGlobalPermanentFocusOwner(Component permanentFocusOwner) { Component oldPermanentFocusOwner = null; boolean shouldFire = false; if (permanentFocusOwner == null || permanentFocusOwner.isFocusable()) { synchronized (KeyboardFocusManager.class) { + checkCurrentKFMSecurity(); + oldPermanentFocusOwner = getPermanentFocusOwner(); try { @@ -780,14 +774,8 @@ */ protected Window getGlobalFocusedWindow() throws SecurityException { synchronized (KeyboardFocusManager.class) { - if (this == getCurrentKeyboardFocusManager()) { - return focusedWindow; - } else { - if (focusLog.isLoggable(PlatformLogger.FINER)) { - focusLog.finer("This manager is " + this + ", current is " + getCurrentKeyboardFocusManager()); - } - throw new SecurityException(notPrivileged); - } + checkCurrentKFMSecurity(); + return focusedWindow; } } @@ -818,6 +806,8 @@ if (focusedWindow == null || focusedWindow.isFocusableWindow()) { synchronized (KeyboardFocusManager.class) { + checkCurrentKFMSecurity(); + oldFocusedWindow = getFocusedWindow(); try { @@ -884,14 +874,8 @@ */ protected Window getGlobalActiveWindow() throws SecurityException { synchronized (KeyboardFocusManager.class) { - if (this == getCurrentKeyboardFocusManager()) { - return activeWindow; - } else { - if (focusLog.isLoggable(PlatformLogger.FINER)) { - focusLog.finer("This manager is " + this + ", current is " + getCurrentKeyboardFocusManager()); - } - throw new SecurityException(notPrivileged); - } + checkCurrentKFMSecurity(); + return activeWindow; } } @@ -920,6 +904,8 @@ protected void setGlobalActiveWindow(Window activeWindow) { Window oldActiveWindow; synchronized (KeyboardFocusManager.class) { + checkCurrentKFMSecurity(); + oldActiveWindow = getActiveWindow(); if (focusLog.isLoggable(PlatformLogger.FINER)) { focusLog.finer("Setting global active window to " + activeWindow + ", old active " + oldActiveWindow); @@ -1214,14 +1200,8 @@ throws SecurityException { synchronized (KeyboardFocusManager.class) { - if (this == getCurrentKeyboardFocusManager()) { - return currentFocusCycleRoot; - } else { - if (focusLog.isLoggable(PlatformLogger.FINER)) { - focusLog.finer("This manager is " + this + ", current is " + getCurrentKeyboardFocusManager()); - } - throw new SecurityException(notPrivileged); - } + checkCurrentKFMSecurity(); + return currentFocusCycleRoot; } } @@ -1245,6 +1225,8 @@ Container oldFocusCycleRoot; synchronized (KeyboardFocusManager.class) { + checkCurrentKFMSecurity(); + oldFocusCycleRoot = getCurrentFocusCycleRoot(); currentFocusCycleRoot = newFocusCycleRoot; } @@ -3062,4 +3044,14 @@ : null; } } + + private void checkCurrentKFMSecurity() { + if (this != getCurrentKeyboardFocusManager()) { + if (focusLog.isLoggable(PlatformLogger.FINER)) { + focusLog.finer("This manager is " + this + + ", current is " + getCurrentKeyboardFocusManager()); + } + throw new SecurityException(notPrivileged); + } + } }
--- a/src/share/classes/java/io/ObjectStreamClass.java Fri Nov 11 15:17:51 2011 +0300 +++ b/src/share/classes/java/io/ObjectStreamClass.java Tue Feb 14 14:01:11 2012 +0000 @@ -123,14 +123,39 @@ */ private boolean hasBlockExternalData = true; + /** + * Contains information about InvalidClassException instances to be thrown + * when attempting operations on an invalid class. Note that instances of + * this class are immutable and are potentially shared among + * ObjectStreamClass instances. + */ + private static class ExceptionInfo { + private final String className; + private final String message; + + ExceptionInfo(String cn, String msg) { + className = cn; + message = msg; + } + + /** + * Returns (does not throw) an InvalidClassException instance created + * from the information in this object, suitable for being thrown by + * the caller. + */ + InvalidClassException newInvalidClassException() { + return new InvalidClassException(className, message); + } + } + /** exception (if any) thrown while attempting to resolve class */ private ClassNotFoundException resolveEx; /** exception (if any) to throw if non-enum deserialization attempted */ - private InvalidClassException deserializeEx; + private ExceptionInfo deserializeEx; /** exception (if any) to throw if non-enum serialization attempted */ - private InvalidClassException serializeEx; + private ExceptionInfo serializeEx; /** exception (if any) to throw if default serialization attempted */ - private InvalidClassException defaultSerializeEx; + private ExceptionInfo defaultSerializeEx; /** serializable fields */ private ObjectStreamField[] fields; @@ -444,7 +469,8 @@ fields = getSerialFields(cl); computeFieldOffsets(); } catch (InvalidClassException e) { - serializeEx = deserializeEx = e; + serializeEx = deserializeEx = + new ExceptionInfo(e.classname, e.getMessage()); fields = NO_FIELDS; } @@ -483,15 +509,14 @@ if (deserializeEx == null) { if (isEnum) { - deserializeEx = new InvalidClassException(name, "enum type"); + deserializeEx = new ExceptionInfo(name, "enum type"); } else if (cons == null) { - deserializeEx = new InvalidClassException( - name, "no valid constructor"); + deserializeEx = new ExceptionInfo(name, "no valid constructor"); } } for (int i = 0; i < fields.length; i++) { if (fields[i].getField() == null) { - defaultSerializeEx = new InvalidClassException( + defaultSerializeEx = new ExceptionInfo( name, "unmatched serializable field(s) declared"); } } @@ -601,8 +626,8 @@ (externalizable != localDesc.externalizable) || !(serializable || externalizable)) { - deserializeEx = new InvalidClassException(localDesc.name, - "class invalid for deserialization"); + deserializeEx = new ExceptionInfo( + localDesc.name, "class invalid for deserialization"); } } @@ -727,11 +752,7 @@ */ void checkDeserialize() throws InvalidClassException { if (deserializeEx != null) { - InvalidClassException ice = - new InvalidClassException(deserializeEx.classname, - deserializeEx.getMessage()); - ice.initCause(deserializeEx); - throw ice; + throw deserializeEx.newInvalidClassException(); } } @@ -742,11 +763,7 @@ */ void checkSerialize() throws InvalidClassException { if (serializeEx != null) { - InvalidClassException ice = - new InvalidClassException(serializeEx.classname, - serializeEx.getMessage()); - ice.initCause(serializeEx); - throw ice; + throw serializeEx.newInvalidClassException(); } } @@ -759,11 +776,7 @@ */ void checkDefaultSerialize() throws InvalidClassException { if (defaultSerializeEx != null) { - InvalidClassException ice = - new InvalidClassException(defaultSerializeEx.classname, - defaultSerializeEx.getMessage()); - ice.initCause(defaultSerializeEx); - throw ice; + throw defaultSerializeEx.newInvalidClassException(); } }
--- a/src/share/classes/java/util/TimeZone.java Fri Nov 11 15:17:51 2011 +0300 +++ b/src/share/classes/java/util/TimeZone.java Tue Feb 14 14:01:11 2012 +0000 @@ -43,6 +43,7 @@ import java.security.AccessController; import java.security.PrivilegedAction; import java.util.concurrent.ConcurrentHashMap; +import sun.awt.AppContext; import sun.security.action.GetPropertyAction; import sun.util.TimeZoneNameUtility; import sun.util.calendar.ZoneInfo; @@ -615,7 +616,7 @@ * method doesn't create a clone. */ static TimeZone getDefaultRef() { - TimeZone defaultZone = defaultZoneTL.get(); + TimeZone defaultZone = getDefaultInAppContext(); if (defaultZone == null) { defaultZone = defaultTimeZone; if (defaultZone == null) { @@ -706,10 +707,49 @@ if (hasPermission()) { synchronized (TimeZone.class) { defaultTimeZone = zone; - defaultZoneTL.set(null); + setDefaultInAppContext(null); } } else { - defaultZoneTL.set(zone); + setDefaultInAppContext(zone); + } + } + + /** + * Returns the default TimeZone in an AppContext if any AppContext + * has ever used. null is returned if any AppContext hasn't been + * used or if the AppContext doesn't have the default TimeZone. + */ + private synchronized static TimeZone getDefaultInAppContext() { + if (!hasSetInAppContext) { + return null; + } + + AppContext ac = AppContext.getAppContext(); + if (ac != null && !ac.isDisposed()) { + return (TimeZone) ac.get(TimeZone.class); + } + return null; + } + + /** + * Sets the default TimeZone in the AppContext to the given + * tz. null is handled special: do nothing if any AppContext + * hasn't been used, remove the default TimeZone in the + * AppContext otherwise. + */ + private synchronized static void setDefaultInAppContext(TimeZone tz) { + if (!hasSetInAppContext && tz == null) { + return; + } + + AppContext ac = AppContext.getAppContext(); + if (ac != null && !ac.isDisposed()) { + if (tz != null) { + ac.put(TimeZone.class, tz); + hasSetInAppContext = true; + } else { + ac.remove(TimeZone.class); + } } } @@ -760,12 +800,13 @@ */ private String ID; private static volatile TimeZone defaultTimeZone; - private static final InheritableThreadLocal<TimeZone> defaultZoneTL - = new InheritableThreadLocal<TimeZone>(); static final String GMT_ID = "GMT"; private static final int GMT_ID_LENGTH = 3; + // true if the default TimeZone has been set in any AppContext + private static boolean hasSetInAppContext; + /** * Parses a custom time zone identifier and returns a corresponding zone. * This method doesn't support the RFC 822 time zone format. (e.g., +hhmm)
--- a/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java Fri Nov 11 15:17:51 2011 +0300 +++ b/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java Tue Feb 14 14:01:11 2012 +0000 @@ -34,8 +34,10 @@ */ package java.util.concurrent.atomic; + +import java.lang.reflect.Array; +import java.util.Arrays; import sun.misc.Unsafe; -import java.util.*; /** * An array of object references in which elements may be updated @@ -49,13 +51,23 @@ public class AtomicReferenceArray<E> implements java.io.Serializable { private static final long serialVersionUID = -6209656149925076980L; - private static final Unsafe unsafe = Unsafe.getUnsafe(); - private static final int base = unsafe.arrayBaseOffset(Object[].class); + private static final Unsafe unsafe; + private static final int base; private static final int shift; - private final Object[] array; + private static final long arrayFieldOffset; + private final Object[] array; // must have exact type Object[] static { - int scale = unsafe.arrayIndexScale(Object[].class); + int scale; + try { + unsafe = Unsafe.getUnsafe(); + arrayFieldOffset = unsafe.objectFieldOffset + (AtomicReferenceArray.class.getDeclaredField("array")); + base = unsafe.arrayBaseOffset(Object[].class); + scale = unsafe.arrayIndexScale(Object[].class); + } catch (Exception e) { + throw new Error(e); + } if ((scale & (scale - 1)) != 0) throw new Error("data type scale not a power of two"); shift = 31 - Integer.numberOfLeadingZeros(scale); @@ -91,7 +103,7 @@ */ public AtomicReferenceArray(E[] array) { // Visibility guaranteed by final field guarantees - this.array = array.clone(); + this.array = Arrays.copyOf(array, array.length, Object[].class); } /** @@ -150,7 +162,7 @@ public final E getAndSet(int i, E newValue) { long offset = checkedByteOffset(i); while (true) { - E current = (E) getRaw(offset); + E current = getRaw(offset); if (compareAndSetRaw(offset, current, newValue)) return current; } @@ -196,7 +208,7 @@ * @return the String representation of the current values of array */ public String toString() { - int iMax = array.length - 1; + int iMax = array.length - 1; if (iMax == -1) return "[]"; @@ -210,4 +222,19 @@ } } + /** + * Reconstitutes the instance from a stream (that is, deserializes it). + * @param s the stream + */ + private void readObject(java.io.ObjectInputStream s) + throws java.io.IOException, ClassNotFoundException { + // Note: This must be changed if any additional fields are defined + Object a = s.readFields().get("array", null); + if (a == null || !a.getClass().isArray()) + throw new java.io.InvalidObjectException("Not array type"); + if (a.getClass() != Object[].class) + a = Arrays.copyOf((Object[])a, Array.getLength(a), Object[].class); + unsafe.putObjectVolatile(this, arrayFieldOffset, a); + } + }
--- a/src/share/classes/sun/java2d/SunGraphics2D.java Fri Nov 11 15:17:51 2011 +0300 +++ b/src/share/classes/sun/java2d/SunGraphics2D.java Tue Feb 14 14:01:11 2012 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -370,6 +370,17 @@ } public void validatePipe() { + /* This workaround is for the situation when we update the Pipelines + * for invalid SurfaceData and run further code when the current + * pipeline doesn't support the type of new SurfaceData created during + * the current pipeline's work (in place of the invalid SurfaceData). + * Usually SurfaceData and Pipelines are repaired (through revalidateAll) + * and called again in the exception handlers */ + + if (!surfaceData.isValid()) { + throw new InvalidPipeException("attempt to validate Pipe with invalid SurfaceData"); + } + surfaceData.validatePipe(this); }
--- a/src/share/classes/sun/java2d/opengl/OGLRenderer.java Fri Nov 11 15:17:51 2011 +0300 +++ b/src/share/classes/sun/java2d/opengl/OGLRenderer.java Tue Feb 14 14:01:11 2012 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import java.awt.Transparency; import java.awt.geom.Path2D; +import sun.java2d.InvalidPipeException; import sun.java2d.SunGraphics2D; import sun.java2d.loops.GraphicsPrimitive; import sun.java2d.pipe.BufferedRenderPipe; @@ -46,7 +47,12 @@ int ctxflags = sg2d.paint.getTransparency() == Transparency.OPAQUE ? OGLContext.SRC_IS_OPAQUE : OGLContext.NO_CONTEXT_FLAGS; - OGLSurfaceData dstData = (OGLSurfaceData)sg2d.surfaceData; + OGLSurfaceData dstData; + try { + dstData = (OGLSurfaceData)sg2d.surfaceData; + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } OGLContext.validateContext(dstData, dstData, sg2d.getCompClip(), sg2d.composite, null, sg2d.paint, sg2d, ctxflags); @@ -55,7 +61,12 @@ @Override protected void validateContextAA(SunGraphics2D sg2d) { int ctxflags = OGLContext.NO_CONTEXT_FLAGS; - OGLSurfaceData dstData = (OGLSurfaceData)sg2d.surfaceData; + OGLSurfaceData dstData; + try { + dstData = (OGLSurfaceData)sg2d.surfaceData; + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } OGLContext.validateContext(dstData, dstData, sg2d.getCompClip(), sg2d.composite, null, sg2d.paint, sg2d, ctxflags); @@ -69,7 +80,12 @@ int ctxflags = sg2d.surfaceData.getTransparency() == Transparency.OPAQUE ? OGLContext.SRC_IS_OPAQUE : OGLContext.NO_CONTEXT_FLAGS; - OGLSurfaceData dstData = (OGLSurfaceData)sg2d.surfaceData; + OGLSurfaceData dstData; + try { + dstData = (OGLSurfaceData)sg2d.surfaceData; + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } OGLContext.validateContext(dstData, dstData, sg2d.getCompClip(), sg2d.composite, null, null, null, ctxflags);
--- a/src/share/classes/sun/java2d/pipe/BufferedContext.java Fri Nov 11 15:17:51 2011 +0300 +++ b/src/share/classes/sun/java2d/pipe/BufferedContext.java Tue Feb 14 14:01:11 2012 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -111,6 +111,8 @@ * * Note: must be called while the RenderQueue lock is held. * + * It's assumed that the type of surfaces has been checked by the Renderer + * * @throws InvalidPipeException if either src or dest surface is not valid * or lost * @see RenderQueue#lock @@ -135,6 +137,8 @@ * * Note: must be called while the RenderQueue lock is held. * + * It's assumed that the type of surfaces has been checked by the Renderer + * * @throws InvalidPipeException if the surface is not valid * or lost * @see RenderQueue#lock @@ -160,6 +164,8 @@ * * Note: must be called while the RenderQueue lock is held. * + * It's assumed that the type of surfaces has been checked by the Renderer + * * @throws InvalidPipeException if either src or dest surface is not valid * or lost */
--- a/src/share/classes/sun/net/httpserver/Request.java Fri Nov 11 15:17:51 2011 +0300 +++ b/src/share/classes/sun/net/httpserver/Request.java Tue Feb 14 14:01:11 2012 +0000 @@ -203,6 +203,13 @@ v = new String(); else v = String.copyValueOf(s, keyend, len - keyend); + + if (hdrs.size() >= ServerConfig.getMaxReqHeaders()) { + throw new IOException("Maximum number of request headers (" + + "sun.net.httpserver.maxReqHeaders) exceeded, " + + ServerConfig.getMaxReqHeaders() + "."); + } + hdrs.add (k,v); len = 0; }
--- a/src/share/classes/sun/net/httpserver/ServerConfig.java Fri Nov 11 15:17:51 2011 +0300 +++ b/src/share/classes/sun/net/httpserver/ServerConfig.java Tue Feb 14 14:01:11 2012 +0000 @@ -48,13 +48,14 @@ static final long DEFAULT_MAX_REQ_TIME = -1; // default: forever static final long DEFAULT_MAX_RSP_TIME = -1; // default: forever static final long DEFAULT_TIMER_MILLIS = 1000; - + static final int DEFAULT_MAX_REQ_HEADERS = 200; static final long DEFAULT_DRAIN_AMOUNT = 64 * 1024; static long idleInterval; static long drainAmount; // max # of bytes to drain from an inputstream static int maxIdleConnections; - + // The maximum number of request headers allowable + private static int maxReqHeaders; // max time a request or response is allowed to take static long maxReqTime; static long maxRspTime; @@ -83,6 +84,11 @@ "sun.net.httpserver.drainAmount", DEFAULT_DRAIN_AMOUNT))).longValue(); + maxReqHeaders = ((Integer)java.security.AccessController.doPrivileged( + new sun.security.action.GetIntegerAction( + "sun.net.httpserver.maxReqHeaders", + DEFAULT_MAX_REQ_HEADERS))).intValue(); + maxReqTime = ((Long)java.security.AccessController.doPrivileged( new sun.security.action.GetLongAction( "sun.net.httpserver.maxReqTime", @@ -161,6 +167,10 @@ return drainAmount; } + static int getMaxReqHeaders() { + return maxReqHeaders; + } + static long getMaxReqTime () { return maxReqTime; }
--- a/src/share/native/java/util/zip/zip_util.c Fri Nov 11 15:17:51 2011 +0300 +++ b/src/share/native/java/util/zip/zip_util.c Tue Feb 14 14:01:11 2012 +0000 @@ -521,7 +521,7 @@ { jint count = 0; ptrdiff_t i; - for (i = 0; i + CENHDR < end - beg; i += CENSIZE(beg + i)) + for (i = 0; i + CENHDR <= end - beg; i += CENSIZE(beg + i)) count++; return count; }
--- a/src/windows/classes/sun/java2d/d3d/D3DRenderer.java Fri Nov 11 15:17:51 2011 +0300 +++ b/src/windows/classes/sun/java2d/d3d/D3DRenderer.java Tue Feb 14 14:01:11 2012 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import java.awt.Transparency; import java.awt.geom.Path2D; +import sun.java2d.InvalidPipeException; import sun.java2d.SunGraphics2D; import sun.java2d.loops.GraphicsPrimitive; import sun.java2d.pipe.BufferedPaints; @@ -47,7 +48,12 @@ int ctxflags = sg2d.paint.getTransparency() == Transparency.OPAQUE ? D3DContext.SRC_IS_OPAQUE : D3DContext.NO_CONTEXT_FLAGS; - D3DSurfaceData dstData = (D3DSurfaceData)sg2d.surfaceData; + D3DSurfaceData dstData; + try { + dstData = (D3DSurfaceData)sg2d.surfaceData; + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } D3DContext.validateContext(dstData, dstData, sg2d.getCompClip(), sg2d.composite, null, sg2d.paint, sg2d, ctxflags); @@ -56,7 +62,12 @@ @Override protected void validateContextAA(SunGraphics2D sg2d) { int ctxflags = D3DContext.NO_CONTEXT_FLAGS; - D3DSurfaceData dstData = (D3DSurfaceData)sg2d.surfaceData; + D3DSurfaceData dstData; + try { + dstData = (D3DSurfaceData)sg2d.surfaceData; + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } D3DContext.validateContext(dstData, dstData, sg2d.getCompClip(), sg2d.composite, null, sg2d.paint, sg2d, ctxflags); @@ -70,7 +81,12 @@ int ctxflags = sg2d.surfaceData.getTransparency() == Transparency.OPAQUE ? D3DContext.SRC_IS_OPAQUE : D3DContext.NO_CONTEXT_FLAGS; - D3DSurfaceData dstData = (D3DSurfaceData)sg2d.surfaceData; + D3DSurfaceData dstData; + try { + dstData = (D3DSurfaceData)sg2d.surfaceData; + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } D3DContext.validateContext(dstData, dstData, sg2d.getCompClip(), sg2d.composite, null, null, null, ctxflags);
--- a/src/windows/classes/sun/java2d/windows/GDIRenderer.java Fri Nov 11 15:17:51 2011 +0300 +++ b/src/windows/classes/sun/java2d/windows/GDIRenderer.java Tue Feb 14 14:01:11 2012 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,7 @@ import java.awt.Shape; import java.awt.geom.Path2D; import java.awt.geom.PathIterator; +import sun.java2d.InvalidPipeException; import sun.java2d.SunGraphics2D; import sun.java2d.SurfaceData; import sun.java2d.pipe.Region; @@ -45,7 +46,7 @@ PixelFillPipe, ShapeDrawPipe { - native void doDrawLine(SurfaceData sData, + native void doDrawLine(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x1, int y1, int x2, int y2); @@ -54,24 +55,32 @@ { int transx = sg2d.transX; int transy = sg2d.transY; - doDrawLine(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x1+transx, y1+transy, x2+transx, y2+transy); + try { + doDrawLine((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x1+transx, y1+transy, x2+transx, y2+transy); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doDrawRect(SurfaceData sData, + native void doDrawRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h); public void drawRect(SunGraphics2D sg2d, int x, int y, int width, int height) { - doDrawRect(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height); + try { + doDrawRect((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doDrawRoundRect(SurfaceData sData, + native void doDrawRoundRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int arcW, int arcH); @@ -80,25 +89,33 @@ int x, int y, int width, int height, int arcWidth, int arcHeight) { - doDrawRoundRect(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height, - arcWidth, arcHeight); + try { + doDrawRoundRect((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height, + arcWidth, arcHeight); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doDrawOval(SurfaceData sData, + native void doDrawOval(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h); public void drawOval(SunGraphics2D sg2d, int x, int y, int width, int height) { - doDrawOval(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height); + try { + doDrawOval((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doDrawArc(SurfaceData sData, + native void doDrawArc(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int angleStart, int angleExtent); @@ -107,13 +124,17 @@ int x, int y, int width, int height, int startAngle, int arcAngle) { - doDrawArc(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height, - startAngle, arcAngle); + try { + doDrawArc((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height, + startAngle, arcAngle); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doDrawPoly(SurfaceData sData, + native void doDrawPoly(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int transx, int transy, int[] xpoints, int[] ypoints, @@ -123,33 +144,45 @@ int xpoints[], int ypoints[], int npoints) { - doDrawPoly(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - sg2d.transX, sg2d.transY, xpoints, ypoints, npoints, false); + try { + doDrawPoly((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + sg2d.transX, sg2d.transY, xpoints, ypoints, npoints, false); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } public void drawPolygon(SunGraphics2D sg2d, int xpoints[], int ypoints[], int npoints) { - doDrawPoly(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - sg2d.transX, sg2d.transY, xpoints, ypoints, npoints, true); + try { + doDrawPoly((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + sg2d.transX, sg2d.transY, xpoints, ypoints, npoints, true); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doFillRect(SurfaceData sData, + native void doFillRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h); public void fillRect(SunGraphics2D sg2d, int x, int y, int width, int height) { - doFillRect(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height); + try { + doFillRect((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doFillRoundRect(SurfaceData sData, + native void doFillRoundRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int arcW, int arcH); @@ -158,25 +191,33 @@ int x, int y, int width, int height, int arcWidth, int arcHeight) { - doFillRoundRect(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height, - arcWidth, arcHeight); + try { + doFillRoundRect((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height, + arcWidth, arcHeight); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doFillOval(SurfaceData sData, + native void doFillOval(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h); public void fillOval(SunGraphics2D sg2d, int x, int y, int width, int height) { - doFillOval(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height); + try { + doFillOval((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doFillArc(SurfaceData sData, + native void doFillArc(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int angleStart, int angleExtent); @@ -185,13 +226,17 @@ int x, int y, int width, int height, int startAngle, int arcAngle) { - doFillArc(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height, - startAngle, arcAngle); + try { + doFillArc((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height, + startAngle, arcAngle); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doFillPoly(SurfaceData sData, + native void doFillPoly(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int transx, int transy, int[] xpoints, int[] ypoints, @@ -201,12 +246,16 @@ int xpoints[], int ypoints[], int npoints) { - doFillPoly(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - sg2d.transX, sg2d.transY, xpoints, ypoints, npoints); + try { + doFillPoly((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + sg2d.transX, sg2d.transY, xpoints, ypoints, npoints); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doShape(SurfaceData sData, + native void doShape(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int transX, int transY, Path2D.Float p2df, boolean isfill); @@ -228,9 +277,13 @@ transX = 0; transY = 0; } - doShape(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - transX, transY, p2df, isfill); + try { + doShape((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + transX, transY, p2df, isfill); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } // REMIND: This is just a hack to get WIDE lines to honor the @@ -239,7 +292,12 @@ // method that could be filled by the doShape method more quickly. public void doFillSpans(SunGraphics2D sg2d, SpanIterator si) { int box[] = new int[4]; - SurfaceData sd = sg2d.surfaceData; + GDIWindowSurfaceData sd; + try { + sd = (GDIWindowSurfaceData)sg2d.surfaceData; + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } Region clip = sg2d.getCompClip(); Composite comp = sg2d.composite; int eargb = sg2d.eargb; @@ -268,7 +326,7 @@ doShape(sg2d, s, true); } - public native void devCopyArea(SurfaceData sData, + public native void devCopyArea(GDIWindowSurfaceData sData, int srcx, int srcy, int dx, int dy, int w, int h); @@ -278,21 +336,21 @@ } public static class Tracer extends GDIRenderer { - void doDrawLine(SurfaceData sData, + void doDrawLine(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x1, int y1, int x2, int y2) { GraphicsPrimitive.tracePrimitive("GDIDrawLine"); super.doDrawLine(sData, clip, comp, color, x1, y1, x2, y2); } - void doDrawRect(SurfaceData sData, + void doDrawRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h) { GraphicsPrimitive.tracePrimitive("GDIDrawRect"); super.doDrawRect(sData, clip, comp, color, x, y, w, h); } - void doDrawRoundRect(SurfaceData sData, + void doDrawRoundRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int arcW, int arcH) @@ -301,14 +359,14 @@ super.doDrawRoundRect(sData, clip, comp, color, x, y, w, h, arcW, arcH); } - void doDrawOval(SurfaceData sData, + void doDrawOval(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h) { GraphicsPrimitive.tracePrimitive("GDIDrawOval"); super.doDrawOval(sData, clip, comp, color, x, y, w, h); } - void doDrawArc(SurfaceData sData, + void doDrawArc(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int angleStart, int angleExtent) @@ -317,7 +375,7 @@ super.doDrawArc(sData, clip, comp, color, x, y, w, h, angleStart, angleExtent); } - void doDrawPoly(SurfaceData sData, + void doDrawPoly(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int transx, int transy, int[] xpoints, int[] ypoints, @@ -327,14 +385,14 @@ super.doDrawPoly(sData, clip, comp, color, transx, transy, xpoints, ypoints, npoints, isclosed); } - void doFillRect(SurfaceData sData, + void doFillRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h) { GraphicsPrimitive.tracePrimitive("GDIFillRect"); super.doFillRect(sData, clip, comp, color, x, y, w, h); } - void doFillRoundRect(SurfaceData sData, + void doFillRoundRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int arcW, int arcH) @@ -343,14 +401,14 @@ super.doFillRoundRect(sData, clip, comp, color, x, y, w, h, arcW, arcH); } - void doFillOval(SurfaceData sData, + void doFillOval(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h) { GraphicsPrimitive.tracePrimitive("GDIFillOval"); super.doFillOval(sData, clip, comp, color, x, y, w, h); } - void doFillArc(SurfaceData sData, + void doFillArc(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int angleStart, int angleExtent) @@ -359,7 +417,7 @@ super.doFillArc(sData, clip, comp, color, x, y, w, h, angleStart, angleExtent); } - void doFillPoly(SurfaceData sData, + void doFillPoly(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int transx, int transy, int[] xpoints, int[] ypoints, @@ -369,7 +427,7 @@ super.doFillPoly(sData, clip, comp, color, transx, transy, xpoints, ypoints, npoints); } - void doShape(SurfaceData sData, + void doShape(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int transX, int transY, Path2D.Float p2df, boolean isfill) @@ -380,7 +438,7 @@ super.doShape(sData, clip, comp, color, transX, transY, p2df, isfill); } - public void devCopyArea(SurfaceData sData, + public void devCopyArea(GDIWindowSurfaceData sData, int srcx, int srcy, int dx, int dy, int w, int h)
--- a/src/windows/native/sun/java2d/windows/GDIRenderer.cpp Fri Nov 11 15:17:51 2011 +0300 +++ b/src/windows/native/sun/java2d/windows/GDIRenderer.cpp Tue Feb 14 14:01:11 2012 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -117,7 +117,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doDrawLine - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doDrawLine @@ -164,7 +164,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doDrawRect - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doDrawRect @@ -209,7 +209,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doDrawRoundRect - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doDrawRoundRect @@ -253,7 +253,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doDrawOval - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doDrawOval @@ -291,7 +291,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doDrawArc - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doDrawArc @@ -347,7 +347,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doDrawPoly - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;III[I[IIZ)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;III[I[IIZ)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doDrawPoly @@ -412,7 +412,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doFillRect - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doFillRect @@ -445,7 +445,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doFillRoundRect - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doFillRoundRect @@ -488,7 +488,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doFillOval - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doFillOval @@ -555,7 +555,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doFillArc - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doFillArc @@ -615,7 +615,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doFillPoly - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;III[I[II)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;III[I[II)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doFillPoly @@ -680,7 +680,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doShape - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region; + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region; * Ljava/awt/Composite;IIILjava/awt/geom/Path2D.Float;Z)V */ JNIEXPORT void JNICALL @@ -863,7 +863,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: devCopyArea - * Signature: (Lsun/awt/windows/SurfaceData;IIIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;IIIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_devCopyArea