diff --git a/builtins/history.def b/builtins/history.def index 5db44c2c..0ee14cb2 100644 --- a/builtins/history.def +++ b/builtins/history.def @@ -189,35 +189,27 @@ history_builtin (list) return (EXECUTION_FAILURE); } if (delete_arg[0] == '-' && delete_start < 0) - { - /* the_history[history_length] == 0x0, so this is correct */ - delete_start += history_length; - if (delete_start < history_base) - { -start_error: - sh_erange (delete_arg, _("history position")); - return (EXECUTION_FAILURE); - } - } - /* numbers as displayed by display_history are offset by history_base */ + /* the_history[history_length] == 0x0, so this is correct */ + delete_start += history_length; else if (delete_start > 0) + /* numbers as displayed by display_history are offset by history_base */ delete_start -= history_base; if (delete_start < 0 || delete_start >= history_length) - goto start_error; + { + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } if (range[0] == '-' && delete_end < 0) - { - delete_end += history_length; - if (delete_end < history_base) - { -range_error: - sh_erange (range, _("history position")); - return (EXECUTION_FAILURE); - } - } + { + delete_end += history_length; + } else if (delete_end > 0) delete_end -= history_base; if (delete_end < 0 || delete_end >= history_length) - goto range_error; + { + sh_erange (range, _("history position")); + return (EXECUTION_FAILURE); + } result = bash_delete_history_range (delete_start, delete_end); if (where_history () > history_length) history_set_pos (history_length); @@ -237,7 +229,7 @@ range_error: that history -d -1 will delete the last history entry, which at this point is the history -d -1 we just added. */ ind = history_length + delete_offset; - if (ind < history_base) + if (ind < 0) { sh_erange (delete_arg, _("history position")); return (EXECUTION_FAILURE);