Hi David,

Looking closer at the java.util.logging.LogRecord and Formatter implementation, I don't think the conversion from Object[] to String[] is needed at all (I confess that I couldn't recall why it was added in the first place). java.util.logging.Logger.log(Level, String, Object[]) takes the Object[] parameter. The java.text.MessageFormat.format() method will print the formatted text. So I can simply pass the params argument to LoggingSupport.log method. I also spot another bug that didn't filter the frame from LoggingProxyImpl class (a regression caused when LoggingProxy was added in the fix for 6876135).

The new webrev is at:
   http://cr.openjdk.java.net/~mchung/6985460/webrev.01/

Thanks
Mandy

On 10/21/10 13:37, David Holmes wrote:
Okay I'm confused by this one. The AWT code passes an XIConSize[] where a Object[] is expected. Something strikes me as wrong that this "works" but I guess that's just the way arrays are. And its okay as long as the array is read-only.

What is really wrong in this case is that the doLog method mutates the array that is passed in to it! It has no business doing that. Someone seems to have assumed that the varargs array is always one created by the compiler, but it need not be. In which case allocating a new String[] to fill in is definitely the right thing to do.

David

Mandy Chung said the following on 10/22/10 05:25:
 Hi Dan,

Can you review a simple fix for:
6985460: PlatformLogger throws ArrayStoreException when j.u.logging is initialized

Webrev at:
   http://cr.openjdk.java.net/~mchung/6985460/webrev.00/

ArrayStoreException was thrown when it attempts to write a String object into a non-String type.

Thanks
Mandy

Reply via email to