diff options
author | ridiculousfish <corydoras@ridiculousfish.com> | 2015-12-19 18:03:46 -0800 |
---|---|---|
committer | ridiculousfish <corydoras@ridiculousfish.com> | 2015-12-19 18:03:46 -0800 |
commit | ad72421b2c738e93ed8d99823974b5a823a02e03 (patch) | |
tree | b5b82711fac3da65e5e399b0ba00b4e90918fda6 /src/builtin.cpp | |
parent | 594b460ba2d8dca59a3bfd282397c5f33aa9da6f (diff) |
Don't define a function if there's an error in function's args
Fixes #2519
Diffstat (limited to 'src/builtin.cpp')
-rw-r--r-- | src/builtin.cpp | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/src/builtin.cpp b/src/builtin.cpp index a3e5eedb..126503a6 100644 --- a/src/builtin.cpp +++ b/src/builtin.cpp @@ -2248,31 +2248,34 @@ int define_function(parser_t &parser, io_streams_t &streams, const wcstring_list } } - /* Here we actually define the function! */ - function_data_t d; + if (!res) + { + /* Here we actually define the function! */ + function_data_t d; - d.name = function_name; - if (desc) - d.description = desc; - d.events.swap(events); - d.shadows = shadows; - d.named_arguments.swap(named_arguments); - d.inherit_vars.swap(inherit_vars); + d.name = function_name; + if (desc) + d.description = desc; + d.events.swap(events); + d.shadows = shadows; + d.named_arguments.swap(named_arguments); + d.inherit_vars.swap(inherit_vars); - for (size_t i=0; i<d.events.size(); i++) - { - event_t &e = d.events.at(i); - e.function_name = d.name; - } + for (size_t i=0; i<d.events.size(); i++) + { + event_t &e = d.events.at(i); + e.function_name = d.name; + } - d.definition = contents.c_str(); + d.definition = contents.c_str(); - function_add(d, parser, definition_line_offset); + function_add(d, parser, definition_line_offset); - // Handle wrap targets - for (size_t w=0; w < wrap_targets.size(); w++) - { - complete_add_wrapper(function_name, wrap_targets.at(w)); + // Handle wrap targets + for (size_t w=0; w < wrap_targets.size(); w++) + { + complete_add_wrapper(function_name, wrap_targets.at(w)); + } } } |