Mercurial > hg > truffle
changeset 22337:4f3eda22dbe9
make GraphPrintVisitor resilient against toString() methods that throw
author | Andreas Woess <andreas.woess@oracle.com> |
---|---|
date | Mon, 02 Nov 2015 16:34:22 +0100 |
parents | 5e37933270b0 |
children | 15c9dda91e50 |
files | truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/GraphPrintVisitor.java |
diffstat | 1 files changed, 9 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/GraphPrintVisitor.java Mon Oct 19 18:27:52 2015 +0200 +++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/GraphPrintVisitor.java Mon Nov 02 16:34:22 2015 +0100 @@ -319,7 +319,7 @@ for (Map.Entry<String, Object> property : node.getProperties().entrySet()) { xmlstream.writeStartElement("p"); xmlstream.writeAttribute("name", property.getKey()); - xmlstream.writeCharacters(String.valueOf(property.getValue())); + xmlstream.writeCharacters(safeToString(property.getValue())); xmlstream.writeEndElement(); // p } xmlstream.writeEndElement(); // properties @@ -541,6 +541,14 @@ return nodes; } + private static String safeToString(Object value) { + try { + return String.valueOf(value); + } catch (Throwable ex) { + return value.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(value)); + } + } + public class GraphPrintAdapter { public void createElementForNode(Object node) {