[BUG-6175]Pasting a specific text into a report designer text box locks up the report designer

If I pull the following text from a database table (or just copy and paste the text) into a text component on a report designer design window it locks up the whole thing:

CURED WITH: Water, Salt, Sugar, Sodium Phosphate, Potassium Chloride, Smoke Flavor, Smoked Sugar (Water,  Hardwood Smoked Sugar), Sodium Erythorbate, Sodium Nitrite.

No idea why… I put it in notepad++ and there are no weird characters or anything. I will also get the following error in the client diagnostics if I try and run that report:

Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: ix = 55
	at java.desktop/sun.font.StandardGlyphVector.setGlyphPosition(Unknown Source)
	at com.inductiveautomation.rm.text.RMTextRun.glyphVector(RMTextRun.java:566)
	at com.inductiveautomation.rm.shape.RMTextShape.paintTextRun(RMTextShape.java:1119)
	at com.inductiveautomation.rm.shape.RMTextShape.paintShapeText(RMTextShape.java:1077)
	at com.inductiveautomation.rm.shape.RMTextShape.paintShape(RMTextShape.java:1052)
	at com.inductiveautomation.rm.shape.RMShapePainterJ2D.sendPaintShape(RMShapePainterJ2D.java:243)
	at com.inductiveautomation.rm.shape.RMShape.paintShapeAll(RMShape.java:3080)
	at com.inductiveautomation.rm.shape.RMShape.paint(RMShape.java:3059)
	at com.inductiveautomation.rm.shape.RMShape.paintShapeChildren(RMShape.java:3123)
	at com.inductiveautomation.rm.shape.RMShape.paintShapeAll(RMShape.java:3091)
	at com.inductiveautomation.rm.shape.RMShape.paint(RMShape.java:3059)
	at com.inductiveautomation.rm.shape.RMShape.paintShapeChildren(RMShape.java:3123)
	at com.inductiveautomation.rm.shape.RMShape.paintShapeAll(RMShape.java:3091)
	at com.inductiveautomation.rm.shape.RMShape.paint(RMShape.java:3059)
	at com.inductiveautomation.rm.shape.RMShape.paintShapeChildren(RMShape.java:3123)
	at com.inductiveautomation.rm.shape.RMShape.paintShapeAll(RMShape.java:3091)
	at com.inductiveautomation.rm.shape.RMShape.paint(RMShape.java:3059)
	at com.inductiveautomation.rm.viewer.RMViewerShape.paint(RMViewerShape.java:197)
	at com.inductiveautomation.rm.shape.RMShapePainterJ2D.paintShape(RMShapePainterJ2D.java:231)
	at com.inductiveautomation.rm.viewer.RMViewer.paintComponent(RMViewer.java:837)
	at java.desktop/javax.swing.JComponent.paint(Unknown Source)
	at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source)
	at java.desktop/javax.swing.JComponent.paint(Unknown Source)
	at java.desktop/javax.swing.JViewport.paint(Unknown Source)
	at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source)
	at java.desktop/javax.swing.JComponent.paint(Unknown Source)
	at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source)
	at java.desktop/javax.swing.JComponent.paint(Unknown Source)
	at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source)
	at java.desktop/javax.swing.JComponent.paint(Unknown Source)
	at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source)
	at java.desktop/javax.swing.JComponent.paint(Unknown Source)
	at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source)
	at java.desktop/javax.swing.JComponent.paint(Unknown Source)
	at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source)
	at java.desktop/javax.swing.JComponent.paint(Unknown Source)
	at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source)
	at com.inductiveautomation.vision.api.client.components.model.AbstractVisionPanel.paintChildren(AbstractVisionPanel.java:304)
	at java.desktop/javax.swing.JComponent.paint(Unknown Source)
	at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source)
	at com.inductiveautomation.vision.api.client.components.model.AbstractVisionPanel.paintChildren(AbstractVisionPanel.java:304)
	at java.desktop/javax.swing.JComponent.paint(Unknown Source)
	at java.desktop/javax.swing.JComponent.paintToOffscreen(Unknown Source)
	at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(Unknown Source)
	at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
	at java.desktop/javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
	at java.desktop/javax.swing.RepaintManager.paint(Unknown Source)
	at java.desktop/javax.swing.JComponent._paintImmediately(Unknown Source)
	at java.desktop/javax.swing.JComponent.paintImmediately(Unknown Source)
	at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source)
	at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
	at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)

This is Ignition 8.1.17

image

Hmm, I can’t reproduce. Could you post (or send in to support, if it’s got private details) a copy of your report? I bet the reproduction hinges on a specific combination of settings (font used, dimensions of text shape, etc).

Sure, I’ll include the report here. Nothing fancy, just a label template.
ReportExportLabel.zip (10.5 KB)

The text box in question is the bottom on with the key @ComboLabelData.Ingredients@

image

It works fine with other product label data so it’s something with that specific string that I posted.

Ahhh, it’s a small report. I bet it’s not the data in the string, it’s the length of the data in the string.

No, something weird is going on. If I manually type that out then it works fine. If I copy the information out of the database query browser and paste it into the text field then it locks up. If I copy it into Notepad++ and then recopy it and paste it into the text field then it locks up. I can copy and paste up until the part in parenthesis and then it locks up. I’ll include the text file, can you try?
Text Copied from Database Table.txt (165 Bytes)

I found it. If you look at the characters in the string there are two spaces in between “Water,” and “Hardwood”. If you get rid of one of the spaces then it works fine. As soon as you put another space in there it locks up the designer.

1 Like

Interesting. It’s got something to do with the way the reporting engine is splitting the text onto multiple lines (which lines up with your observation with the spaces).
I changed the font in the lower text field to ‘Arial Narrow’ and the report renders properly, at least on my machine. So it’s something about this combination of things. I’ll file a ticket, since it’s easy to reproduce.

Awesome, I confirmed that changing the font to Arial Narrow does work for now. Thanks, I thought I was going crazy there for a little bit.