﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
9729	Attribute display involving CJK crashes JOSM	jengelh@…	jengelh@…	"What steps will reproduce the problem?
 1. Download object 35578845 for example.
 2. Select it.

What is the expected result?
That the key-value pairs are shown in the ""Tags / Memberships"" window.

What happens instead?
JOSM throws an exception if the ""Tags / Memberships"" window is enabled.

Please provide any additional information below. Attach a screenshot if
possible.

{{{
Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2014-01-29 15:23:51
Last Changed Author: Don-vip
Revision: 6767
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2014-01-29 16:18:16 +0100 (Wed, 29 Jan 2014)
Last Changed Rev: 6767

Identification: JOSM/1.5 (6767 en) Linux openSUSE 13.1 (Bottle) (x86_64)
Memory Usage: 173 MB / 910 MB (94 MB allocated, but free)
Java version: 1.7.0_51, Oracle Corporation, OpenJDK 64-Bit Server VM
VM arguments: [-Xms64M, -Xmx1024M, -XX:+UseParallelGC, -XX:+UseAdaptiveSizePolicy]
Dataset consistency test: No problems found


java.lang.ArrayIndexOutOfBoundsException: -38795802
	at sun.font.FileFontStrike.getCachedGlyphPtr(FileFontStrike.java:472)
	at sun.font.FileFontStrike.getSlot0GlyphImagePtrs(FileFontStrike.java:438)
	at sun.font.CompositeStrike.getGlyphImagePtrs(CompositeStrike.java:115)
	at sun.font.GlyphList.mapChars(GlyphList.java:272)
	at sun.font.GlyphList.setFromString(GlyphList.java:244)
	at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:71)
	at sun.java2d.pipe.ValidatePipe.drawString(ValidatePipe.java:165)
	at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2867)
	at sun.swing.SwingUtilities2.drawString(SwingUtilities2.java:552)
	at sun.swing.SwingUtilities2.drawStringUnderlineCharAt(SwingUtilities2.java:584)
	at javax.swing.plaf.synth.SynthGraphicsUtils.paintText(SynthGraphicsUtils.java:340)
	at javax.swing.plaf.synth.SynthGraphicsUtils.paintText(SynthGraphicsUtils.java:319)
	at javax.swing.plaf.synth.SynthGraphicsUtils.paintText(SynthGraphicsUtils.java:410)
	at javax.swing.plaf.synth.SynthLabelUI.paint(SynthLabelUI.java:213)
	at javax.swing.plaf.synth.SynthLabelUI.update(SynthLabelUI.java:177)
	at javax.swing.JComponent.paintComponent(JComponent.java:769)
	at javax.swing.JComponent.paint(JComponent.java:1045)
	at javax.swing.CellRendererPane.paintComponent(CellRendererPane.java:151)
	at javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:693)
	at javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:581)
	at javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:365)
	at javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:276)
	at javax.swing.JComponent.paintComponent(JComponent.java:769)
	at javax.swing.JComponent.paint(JComponent.java:1045)
	at javax.swing.JComponent.paintChildren(JComponent.java:878)
	at javax.swing.JComponent.paint(JComponent.java:1054)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
	at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1249)
	at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
	at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
	at javax.swing.RepaintManager$3.run(RepaintManager.java:808)
	at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
	at javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:694)
	at java.awt.EventQueue$3.run(EventQueue.java:692)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

}}}
This is OpenJDK 1.7. I think this may have something to do with rendering Korean text strings, as JOSM seems to work most of the time with Chinese and Japanese (such as with the nearby ""place"" node.)

Locale, maybe it's relevant
{{{
$ locale
LANG=en_US.utf8
LC_CTYPE=en_US.utf8
LC_NUMERIC=POSIX
LC_TIME=POSIX
LC_COLLATE=POSIX
LC_MONETARY=POSIX
LC_MESSAGES=en_US.UTF-8
LC_PAPER=""en_US.utf8""
LC_NAME=""en_US.utf8""
LC_ADDRESS=""en_US.utf8""
LC_TELEPHONE=""en_US.utf8""
LC_MEASUREMENT=""en_US.utf8""
LC_IDENTIFICATION=""en_US.utf8""
LC_ALL=
}}}"	defect	closed	normal	15.02	Core	tested	fixed	javabug font	
