Index: Source/bindings/templates/methods.cpp |
diff --git a/Source/bindings/templates/methods.cpp b/Source/bindings/templates/methods.cpp |
index 71336908ed341d74bd1d874fd74ebef9069038cb..194780f409f9e4de4c88e33aadb39c801d4432e6 100644 |
--- a/Source/bindings/templates/methods.cpp |
+++ b/Source/bindings/templates/methods.cpp |
@@ -252,8 +252,7 @@ if (!{{method.cpp_value}}) |
return; |
{% elif method.is_constructor %} |
{{method.cpp_type}} impl = {{cpp_value}}; |
-{% elif method.is_call_with_script_state or method.is_raises_exception %} |
-{# FIXME: consider always using a local variable #} |
+{% elif method.is_use_result_local and not method.union_arguments %} |
haraken
2014/07/10 14:43:57
Can we fix the code generator so that we always us
Jens Widell
2014/07/10 14:56:44
I had that for a while. The generated code ends up
haraken
2014/07/10 15:11:44
I think we should investigate. Since you're taking
Jens Widell
2014/07/10 15:28:53
Very quick investigation (I just hacked my use_loc
|
{{method.cpp_type}} result = {{cpp_value}}; |
{% endif %} |
{# Post-call #} |
@@ -269,7 +268,14 @@ if (exceptionState.hadException()) { |
{%- elif method.union_arguments %} |
{{union_type_method_call_and_set_return_value(method)}} |
{%- elif v8_set_return_value %} |
+{% if method.is_nullable %} |
+if (result.isNull()) |
+ v8SetReturnValueNull(info); |
+else |
+ {{v8_set_return_value}}; |
+{% else %} |
{{v8_set_return_value}}; |
+{% endif %} |
{%- endif %}{# None for void #} |
{# Post-set #} |
{% if interface_name == 'EventTarget' and method.name in ('addEventListener', |