Ignore:
Timestamp:
2014-02-04T15:11:05+01:00 (10 years ago)
Author:
bastiK
Message:

fixed #9674 - Support for escaping special characters

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/tools/ImageProvider.java

    r6747 r6809  
    2626import java.net.URL;
    2727import java.net.URLDecoder;
     28import java.net.URLEncoder;
    2829import java.util.ArrayList;
    2930import java.util.Arrays;
     
    530531                String base64 = m.group(2);
    531532                String data = m.group(3);
    532                 byte[] bytes = ";base64".equals(base64)
    533                         ? Base64.decodeBase64(data)
    534                                 : URLDecoder.decode(data, "utf-8").getBytes();
     533                byte[] bytes;
     534                if (";base64".equals(base64)) {
     535                    bytes = Base64.decodeBase64(data);
     536                } else {
     537                    try {
     538                        bytes = URLDecoder.decode(data, "utf-8").getBytes();
     539                    } catch (IllegalArgumentException ex) {
     540                        Main.warn("Unable to decode URL data part: "+ex.getMessage() + " (" + data + ")");
     541                        return null;
     542                    }
     543                }
    535544                if (mediatype != null && mediatype.contains("image/svg+xml")) {
    536                     URI uri = getSvgUniverse().loadSVG(new StringReader(new String(bytes)), url);
    537                     return new ImageResource(getSvgUniverse().getDiagram(uri));
     545                    String s = new String(bytes);
     546                    URI uri = getSvgUniverse().loadSVG(new StringReader(s), URLEncoder.encode(s, "UTF-8"));
     547                    SVGDiagram svg = getSvgUniverse().getDiagram(uri);
     548                    if (svg == null) {
     549                        Main.warn("Unable to process svg: "+s);
     550                        return null;
     551                    }
     552                    return new ImageResource(svg);
    538553                } else {
    539554                    try {
Note: See TracChangeset for help on using the changeset viewer.