aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/codegen/CodegenRust.py
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2014-04-18 10:16:21 +0200
committerMs2ger <ms2ger@gmail.com>2014-04-18 10:18:24 +0200
commitd53841b016d21ce08c80b1147456e85719637a12 (patch)
tree2f0fb36802c03e62c2d934fa9e1b0dced52f084f /src/components/script/dom/bindings/codegen/CodegenRust.py
parentbaa384536282ba042fe40e1e9e862e9cdcf01060 (diff)
downloadservo-d53841b016d21ce08c80b1147456e85719637a12.tar.gz
servo-d53841b016d21ce08c80b1147456e85719637a12.zip
Handle exceptions from FindEnumStringIndex correctly.
The previous code would return success from the JSNative with a pending exception, potentially leading to assertion failures inside the JS engine later.
Diffstat (limited to 'src/components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r--src/components/script/dom/bindings/codegen/CodegenRust.py3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py
index 23ad1ecd9af..2110ab7ebd9 100644
--- a/src/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/src/components/script/dom/bindings/codegen/CodegenRust.py
@@ -739,13 +739,14 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
template = (
"match FindEnumStringIndex(cx, ${val}, %(values)s) {\n"
- " Err(_) => { %(handleInvalidEnumValueCode)s },\n"
+ " Err(_) => { %(exceptionCode)s },\n"
" Ok(None) => { %(handleInvalidEnumValueCode)s },\n"
" Ok(Some(index)) => {\n"
" //XXXjdm need some range checks up in here.\n"
" ${declName} = cast::transmute(index);\n"
" },\n"
"}" % { "values" : enum + "Values::strings",
+ "exceptionCode" : exceptionCode,
"handleInvalidEnumValueCode" : handleInvalidEnumValueCode })
if defaultValue is not None: