No OOM in popup_mode_name()

This commit is contained in:
Felipe Oliveira Carvalho
2014-05-28 23:34:03 -03:00
parent 4667fbcbe7
commit d0fe14fdfe

View File

@@ -186,11 +186,8 @@ ex_menu (
for (i = 0; i < MENU_INDEX_TIP; ++i) for (i = 0; i < MENU_INDEX_TIP; ++i)
if (modes & (1 << i)) { if (modes & (1 << i)) {
p = popup_mode_name(menu_path, i); p = popup_mode_name(menu_path, i);
if (p != NULL) { menu_nable_recurse(root_menu, p, MENU_ALL_MODES, enable);
menu_nable_recurse(root_menu, p, MENU_ALL_MODES, free(p);
enable);
free(p);
}
} }
} }
menu_nable_recurse(root_menu, menu_path, modes, enable); menu_nable_recurse(root_menu, menu_path, modes, enable);
@@ -208,10 +205,8 @@ ex_menu (
for (i = 0; i < MENU_INDEX_TIP; ++i) for (i = 0; i < MENU_INDEX_TIP; ++i)
if (modes & (1 << i)) { if (modes & (1 << i)) {
p = popup_mode_name(menu_path, i); p = popup_mode_name(menu_path, i);
if (p != NULL) { remove_menu(&root_menu, p, MENU_ALL_MODES, TRUE);
remove_menu(&root_menu, p, MENU_ALL_MODES, TRUE); free(p);
free(p);
}
} }
} }
@@ -242,13 +237,10 @@ ex_menu (
for (i = 0; i < MENU_INDEX_TIP; ++i) for (i = 0; i < MENU_INDEX_TIP; ++i)
if (modes & (1 << i)) { if (modes & (1 << i)) {
p = popup_mode_name(menu_path, i); p = popup_mode_name(menu_path, i);
if (p != NULL) { // Include all modes, to make ":amenu" work
/* Include all modes, to make ":amenu" work */ menuarg.modes = modes;
menuarg.modes = modes; add_menu_path(p, &menuarg, pri_tab, map_to);
add_menu_path(p, &menuarg, pri_tab, map_to free(p);
);
free(p);
}
} }
} }
@@ -1153,10 +1145,9 @@ get_menu_cmd_modes (
*/ */
static char_u *popup_mode_name(char_u *name, int idx) static char_u *popup_mode_name(char_u *name, int idx)
{ {
char_u *p;
int len = (int)STRLEN(name); int len = (int)STRLEN(name);
p = vim_strnsave(name, len + 1); char_u *p = vim_strnsave(name, len + 1);
memmove(p + 6, p + 5, (size_t)(len - 4)); memmove(p + 6, p + 5, (size_t)(len - 4));
p[5] = menu_mode_chars[idx]; p[5] = menu_mode_chars[idx];