diff --git a/lib/OpenLayers/Renderer/SVG.js b/lib/OpenLayers/Renderer/SVG.js index 8162401cf0..9981ae1efb 100644 --- a/lib/OpenLayers/Renderer/SVG.js +++ b/lib/OpenLayers/Renderer/SVG.js @@ -336,7 +336,9 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, { node.setAttributeNS(null, "cy", y); node.setAttributeNS(null, "r", radius); } else { - this.root.removeChild(node); + if (node.parentNode == this.root) { + this.root.removeChild(node); + } } }, diff --git a/tests/Renderer/test_SVG.html b/tests/Renderer/test_SVG.html index 4cc71b0fb1..34895489bb 100644 --- a/tests/Renderer/test_SVG.html +++ b/tests/Renderer/test_SVG.html @@ -127,7 +127,7 @@ return; } - t.plan(3); + t.plan(6); var r = new OpenLayers.Renderer.SVG(document.body); r.resolution = 0.5; @@ -146,6 +146,18 @@ t.eq(node.getAttributeNS(null, 'cx'), '2', "cx is correct"); t.eq(node.getAttributeNS(null, 'cy'), '-4', "cy is correct"); t.eq(node.getAttributeNS(null, 'r'), '3', "r is correct"); + + // #1274: out of bound node fails when first added + var geometry = { + x: 10000000, + y: 200000000 + } + + r.drawCircle(node, geometry, "blah_4000"); + + t.eq(node.getAttributeNS(null, 'cx'), '2', "cx is correct"); + t.eq(node.getAttributeNS(null, 'cy'), '-4', "cy is correct"); + t.eq(node.getAttributeNS(null, 'r'), '3', "r is correct"); } function test_SVG_drawlinestring(t) { @@ -365,4 +377,4 @@
- \ No newline at end of file +