# HG changeset patch # User Bram Moolenaar # Date 1668363304 -3600 # Node ID 9fe10dc9aeec19a147957018e4da9d9a0b57c9ce # Parent a64ca9f84fd3a3e33133112a35587a4ea5595abe patch 9.0.0872: code is indented more than needed Commit: https://github.com/vim/vim/commit/623e94e13810e109c6aa201bcf3a8278429502f3 Author: Yegappan Lakshmanan Date: Sun Nov 13 18:11:17 2022 +0000 patch 9.0.0872: code is indented more than needed Problem: Code is indented more than needed. Solution: Return early. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/11538) diff --git a/src/cmdhist.c b/src/cmdhist.c --- a/src/cmdhist.c +++ b/src/cmdhist.c @@ -131,68 +131,70 @@ init_history(void) // If size of history table changed, reallocate it newlen = (int)p_hi; - if (newlen != hislen) // history length changed + if (newlen == hislen) // history length didn't change + return; + + // history length changed + for (type = 0; type < HIST_COUNT; ++type) // adjust the tables { - for (type = 0; type < HIST_COUNT; ++type) // adjust the tables + if (newlen) { - if (newlen) + temp = ALLOC_MULT(histentry_T, newlen); + if (temp == NULL) // out of memory! { - temp = ALLOC_MULT(histentry_T, newlen); - if (temp == NULL) // out of memory! - { - if (type == 0) // first one: just keep the old length - { - newlen = hislen; - break; - } - // Already changed one table, now we can only have zero - // length for all tables. - newlen = 0; - type = -1; - continue; - } - } - else - temp = NULL; - if (newlen == 0 || temp != NULL) - { - if (hisidx[type] < 0) // there are no entries yet + if (type == 0) // first one: just keep the old length { - for (i = 0; i < newlen; ++i) - clear_hist_entry(&temp[i]); - } - else if (newlen > hislen) // array becomes bigger - { - for (i = 0; i <= hisidx[type]; ++i) - temp[i] = history[type][i]; - j = i; - for ( ; i <= newlen - (hislen - hisidx[type]); ++i) - clear_hist_entry(&temp[i]); - for ( ; j < hislen; ++i, ++j) - temp[i] = history[type][j]; + newlen = hislen; + break; } - else // array becomes smaller or 0 - { - j = hisidx[type]; - for (i = newlen - 1; ; --i) - { - if (i >= 0) // copy newest entries - temp[i] = history[type][j]; - else // remove older entries - vim_free(history[type][j].hisstr); - if (--j < 0) - j = hislen - 1; - if (j == hisidx[type]) - break; - } - hisidx[type] = newlen - 1; - } - vim_free(history[type]); - history[type] = temp; + // Already changed one table, now we can only have zero + // length for all tables. + newlen = 0; + type = -1; + continue; } } - hislen = newlen; + else + temp = NULL; + + if (newlen != 0 && temp == NULL) + continue; + + if (hisidx[type] < 0) // there are no entries yet + { + for (i = 0; i < newlen; ++i) + clear_hist_entry(&temp[i]); + } + else if (newlen > hislen) // array becomes bigger + { + for (i = 0; i <= hisidx[type]; ++i) + temp[i] = history[type][i]; + j = i; + for ( ; i <= newlen - (hislen - hisidx[type]); ++i) + clear_hist_entry(&temp[i]); + for ( ; j < hislen; ++i, ++j) + temp[i] = history[type][j]; + } + else // array becomes smaller or 0 + { + j = hisidx[type]; + for (i = newlen - 1; ; --i) + { + if (i >= 0) // copy newest entries + temp[i] = history[type][j]; + else // remove older entries + vim_free(history[type][j].hisstr); + if (--j < 0) + j = hislen - 1; + if (j == hisidx[type]) + break; + } + hisidx[type] = newlen - 1; + } + vim_free(history[type]); + history[type] = temp; } + hislen = newlen; } void @@ -244,23 +246,22 @@ in_history( i = hislen - 1; } while (i != hisidx[type]); - if (last_i >= 0) + if (last_i < 0) + return FALSE; + + str = history[type][i].hisstr; + while (i != hisidx[type]) { - str = history[type][i].hisstr; - while (i != hisidx[type]) - { - if (++i >= hislen) - i = 0; - history[type][last_i] = history[type][i]; - last_i = i; - } - history[type][i].hisnum = ++hisnum[type]; - history[type][i].viminfo = FALSE; - history[type][i].hisstr = str; - history[type][i].time_set = vim_time(); - return TRUE; + if (++i >= hislen) + i = 0; + history[type][last_i] = history[type][i]; + last_i = i; } - return FALSE; + history[type][i].hisnum = ++hisnum[type]; + history[type][i].viminfo = FALSE; + history[type][i].hisstr = str; + history[type][i].time_set = vim_time(); + return TRUE; } /* @@ -328,25 +329,26 @@ add_to_history( } last_maptick = -1; } - if (!in_history(histype, new_entry, TRUE, sep, FALSE)) - { - if (++hisidx[histype] == hislen) - hisidx[histype] = 0; - hisptr = &history[histype][hisidx[histype]]; - vim_free(hisptr->hisstr); + + if (in_history(histype, new_entry, TRUE, sep, FALSE)) + return; + + if (++hisidx[histype] == hislen) + hisidx[histype] = 0; + hisptr = &history[histype][hisidx[histype]]; + vim_free(hisptr->hisstr); - // Store the separator after the NUL of the string. - len = (int)STRLEN(new_entry); - hisptr->hisstr = vim_strnsave(new_entry, len + 2); - if (hisptr->hisstr != NULL) - hisptr->hisstr[len + 1] = sep; + // Store the separator after the NUL of the string. + len = (int)STRLEN(new_entry); + hisptr->hisstr = vim_strnsave(new_entry, len + 2); + if (hisptr->hisstr != NULL) + hisptr->hisstr[len + 1] = sep; - hisptr->hisnum = ++hisnum[histype]; - hisptr->viminfo = FALSE; - hisptr->time_set = vim_time(); - if (histype == HIST_SEARCH && in_map) - last_maptick = maptick; - } + hisptr->hisnum = ++hisnum[histype]; + hisptr->viminfo = FALSE; + hisptr->time_set = vim_time(); + if (histype == HIST_SEARCH && in_map) + last_maptick = maptick; } #if defined(FEAT_EVAL) || defined(PROTO) @@ -557,17 +559,16 @@ f_histadd(typval_T *argvars UNUSED, typv str = tv_get_string_chk(&argvars[0]); // NULL on type error histype = str != NULL ? get_histtype(str) : -1; - if (histype >= 0) - { - str = tv_get_string_buf(&argvars[1], buf); - if (*str != NUL) - { - init_history(); - add_to_history(histype, str, FALSE, NUL); - rettv->vval.v_number = TRUE; - return; - } - } + if (histype < 0) + return; + + str = tv_get_string_buf(&argvars[1], buf); + if (*str == NUL) + return; + + init_history(); + add_to_history(histype, str, FALSE, NUL); + rettv->vval.v_number = TRUE; } /* @@ -670,20 +671,22 @@ remove_key_from_history(void) if (i < 0) return; p = history[HIST_CMD][i].hisstr; - if (p != NULL) - for ( ; *p; ++p) - if (STRNCMP(p, "key", 3) == 0 && !isalpha(p[3])) - { - p = vim_strchr(p + 3, '='); - if (p == NULL) - break; - ++p; - for (i = 0; p[i] && !VIM_ISWHITE(p[i]); ++i) - if (p[i] == '\\' && p[i + 1]) - ++i; - STRMOVE(p, p + i); - --p; - } + if (p == NULL) + return; + + for ( ; *p; ++p) + if (STRNCMP(p, "key", 3) == 0 && !isalpha(p[3])) + { + p = vim_strchr(p + 3, '='); + if (p == NULL) + break; + ++p; + for (i = 0; p[i] && !VIM_ISWHITE(p[i]); ++i) + if (p[i] == '\\' && p[i + 1]) + ++i; + STRMOVE(p, p + i); + --p; + } } #endif diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 872, +/**/ 871, /**/ 870,