Signed-off-by: herengui <herengui@uniontech.com> (cherry picked from commit 360728b76b81012d8d640013d4d9c741b6a169a4)
41 lines
1.3 KiB
Diff
41 lines
1.3 KiB
Diff
From e9e8dd148b9454abb5a7704d6f6249f7aa7aeded Mon Sep 17 00:00:00 2001
|
|
From: herengui <herengui@uniontech.com>
|
|
Date: Thu, 10 Mar 2022 18:14:43 +0800
|
|
Subject: [PATCH] Replace Curses mvprintw() with va_list-based equivalent
|
|
|
|
Instead of allocating a buffer for the formatted string and printing
|
|
it with mvprintw() -- which should have a "%s" format argument to guard
|
|
against '%' characters in the formatted string, hat tip Andreas Tille --,
|
|
use vw_printw() which takes a va_list so can do the formatting itself.
|
|
|
|
Signed-off-by: herengui <herengui@uniontech.com>
|
|
---
|
|
bam_tview_curses.c | 8 ++------
|
|
1 file changed, 2 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/bam_tview_curses.c b/bam_tview_curses.c
|
|
index 11db0da..37fb033 100644
|
|
--- a/bam_tview_curses.c
|
|
+++ b/bam_tview_curses.c
|
|
@@ -78,15 +78,11 @@ static void curses_destroy(tview_t* base) {
|
|
*/
|
|
|
|
static void curses_mvprintw(struct AbstractTview* tv,int y ,int x,const char* fmt,...) {
|
|
- unsigned int size=tv->mcol+2;
|
|
- char* str=malloc(size);
|
|
- if(str==0) exit(EXIT_FAILURE);
|
|
va_list argptr;
|
|
va_start(argptr, fmt);
|
|
- vsnprintf(str,size, fmt, argptr);
|
|
+ if (wmove(stdscr, y, x) != ERR)
|
|
+ vw_printw(stdscr, fmt, argptr);
|
|
va_end(argptr);
|
|
- mvprintw(y,x,str);
|
|
- free(str);
|
|
}
|
|
|
|
static void curses_mvaddch(struct AbstractTview* tv,int y,int x,int ch) {
|
|
--
|
|
2.20.1
|
|
|