aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/builtin.cpp
diff options
context:
space:
mode:
authorGravatar ridiculousfish <corydoras@ridiculousfish.com>2015-12-19 18:03:46 -0800
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2015-12-19 18:03:46 -0800
commitad72421b2c738e93ed8d99823974b5a823a02e03 (patch)
treeb5b82711fac3da65e5e399b0ba00b4e90918fda6 /src/builtin.cpp
parent594b460ba2d8dca59a3bfd282397c5f33aa9da6f (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.cpp43
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));
+ }
}
}