From 8da45b5f058ca130375198adcdbd51e11b01bc76 Mon Sep 17 00:00:00 2001 From: Vincent Privat Date: Sun, 2 Nov 2025 23:08:51 +0100 Subject: [PATCH] take code review into account --- .../imageio/plugins/svg/SVGImageReaderSpi.java | 16 +++++++--------- .../plugins/svg/SVGImageReaderSpiTest.java | 3 +++ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java index a69602fa..7fe3f071 100755 --- a/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java +++ b/imageio/imageio-batik/src/main/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpi.java @@ -155,17 +155,19 @@ public final class SVGImageReaderSpi extends ImageReaderSpiBase { // If tag name not terminated yet, keep reading bytes (within limit) final int MAX_TAG_NAME = 256; final boolean incompleteTagName = consumedFromBuffer == buffer.length; - readBuffer(input, nameBuf, x -> incompleteTagName && x.size() < MAX_TAG_NAME, + readBuffer(input, nameBuf, output -> incompleteTagName && output.size() < MAX_TAG_NAME, bb -> bb == '>' || Character.isWhitespace(bb) || bb == '/'); - if (nameBuf.toString("US-ASCII").toLowerCase(Locale.ENGLISH).endsWith(":svg")) { + final String name = nameBuf.toString("US-ASCII"); + if (name.toLowerCase(Locale.ENGLISH).endsWith(":svg")) { // Scan the rest of the tag attributes until '>' to find the SVG namespace URI ByteArrayOutputStream attrBuf = new ByteArrayOutputStream(); final int MAX_ATTR_SCAN = 1024; // safe upper bound to keep it fast - readBuffer(input, attrBuf, x -> x.size() < MAX_ATTR_SCAN, bb -> bb == '>'); + readBuffer(input, attrBuf, output -> output.size() < MAX_ATTR_SCAN, bb -> bb == '>'); // If the tag contains the SVG namespace, it's SVG. - if (attrBuf.toString("US-ASCII").contains("http://www.w3.org/2000/svg")) { + if (attrBuf.toString("US-ASCII").matches( + ".*xmlns:" + name.split(":")[0] + "\\s*=\\s*\"http://www.w3.org/2000/svg\".*")) { return true; } } @@ -192,11 +194,7 @@ public final class SVGImageReaderSpi extends ImageReaderSpiBase { private static void readBuffer(final ImageInputStream input, final ByteArrayOutputStream buffer, final Predicate loopCondition, Predicate breakCondition) throws IOException { while (loopCondition.test(buffer)) { - int r = input.read(); - if (r == -1) { - throw new EOFException(); - } - byte bb = (byte) r; + byte bb = input.readByte(); if (breakCondition.test(bb)) { break; } diff --git a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpiTest.java b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpiTest.java index e2224647..1fc69fde 100644 --- a/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpiTest.java +++ b/imageio/imageio-batik/src/test/java/com/twelvemonkeys/imageio/plugins/svg/SVGImageReaderSpiTest.java @@ -70,6 +70,9 @@ public class SVGImageReaderSpiTest { "