commit eb3201c77210417ced068ffd59722fe6c1dcd50d
parent 75b30b091fed5885bff2e0fcdbb6f021927cfb03
Author: glepnir <glephunter@gmail.com>
Date: Sat, 29 Nov 2025 03:27:19 +0800
fix(float): null pointer dereference, redundant call #36727
Problem: Null pointer dereference when checking *wp->w_p_stl.
win_set_inner_size called twice in win_new_float.
Solution: Add null check for wp->w_p_stl. Remove redundant
win_set_inner_size call as win_config_float already calls it.
Diffstat:
2 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
@@ -127,8 +127,6 @@ You can change the contents of the status line with the 'statusline' option.
This option can be local to the window, so that you can have a different
status line in each window.
-Note: |floating-windows| 'statusline' is not affected by 'laststatus'.
-
Normally, inversion is used to display the status line. This can be changed
with the |hl-StatusLine| highlight group. If no highlighting is used for the
status line, the '^' character is used for the current window, and '=' for
diff --git a/src/nvim/winfloat.c b/src/nvim/winfloat.c
@@ -108,14 +108,13 @@ win_T *win_new_float(win_T *wp, bool last, WinConfig fconfig, Error *err)
win_append(lastwin_nofloating(), wp, NULL);
}
wp->w_floating = true;
- wp->w_status_height = *wp->w_p_stl != NUL && (p_ls == 1 || p_ls == 2) ? STATUS_HEIGHT : 0;
+ wp->w_status_height = wp->w_p_stl && *wp->w_p_stl != NUL
+ && (p_ls == 1 || p_ls == 2) ? STATUS_HEIGHT : 0;
wp->w_winbar_height = 0;
wp->w_hsep_height = 0;
wp->w_vsep_width = 0;
win_config_float(wp, fconfig);
- win_set_inner_size(wp, true);
- wp->w_pos_changed = true;
redraw_later(wp, UPD_VALID);
return wp;
}