Index: Source/core/svg/SVGAngleTearOff.cpp |
diff --git a/Source/core/svg/SVGAngleTearOff.cpp b/Source/core/svg/SVGAngleTearOff.cpp |
index 8a5f832ace8e6ee456c1aa82d5aebe6f3d21c665..33145fce03db9f490deee4cff18a76626afd1fed 100644 |
--- a/Source/core/svg/SVGAngleTearOff.cpp |
+++ b/Source/core/svg/SVGAngleTearOff.cpp |
@@ -32,6 +32,7 @@ |
#include "core/svg/SVGAngleTearOff.h" |
#include "bindings/v8/ExceptionState.h" |
+#include "bindings/v8/ExceptionStatePlaceholder.h" |
#include "core/dom/ExceptionCode.h" |
namespace WebCore { |
@@ -108,7 +109,16 @@ void SVGAngleTearOff::setValueAsString(const String& value, ExceptionState& exce |
return; |
} |
+ String oldValue = target()->valueAsString(); |
+ |
target()->setValueAsString(value, exceptionState); |
+ |
+ if (!exceptionState.hadException() && !hasExposedAngleUnit()) { |
+ target()->setValueAsString(oldValue, ASSERT_NO_EXCEPTION); // rollback to old value |
+ exceptionState.throwDOMException(SyntaxError, "The value provided ('" + value + "') is invalid."); |
+ return; |
+ } |
+ |
commitChange(); |
} |