ncurses 6.3 - patch 20220612

+ modify waddch_literal() to allow for double-width base character when
  merging a combining character (report by Gavin Troy).
+ improve _tracecchar_t2() formatting of base+combining character.
This commit is contained in:
Thomas E. Dickey 2022-06-12 18:14:27 +00:00
parent 7104baa59f
commit fe04a14d6f
13 changed files with 60 additions and 43 deletions

7
NEWS
View File

@ -26,7 +26,7 @@
-- sale, use or other dealings in this Software without prior written -- -- sale, use or other dealings in this Software without prior written --
-- authorization. -- -- authorization. --
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
-- $Id: NEWS,v 1.3815 2022/06/04 23:17:01 tom Exp $ -- $Id: NEWS,v 1.3818 2022/06/12 10:22:30 tom Exp $
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started This is a log of changes that ncurses has gone through since Zeyd started
@ -46,6 +46,11 @@ See the AUTHORS file for the corresponding full names.
Changes through 1.9.9e did not credit all contributions; Changes through 1.9.9e did not credit all contributions;
it is not possible to add this information. it is not possible to add this information.
20220612
+ modify waddch_literal() to allow for double-width base character when
merging a combining character (report by Gavin Troy).
+ improve _tracecchar_t2() formatting of base+combining character.
20220604 20220604
+ add note on portable memory-leak checking in man/curs_memleaks.3x + add note on portable memory-leak checking in man/curs_memleaks.3x
+ remove u6-u9 from teken-2018 -TD + remove u6-u9 from teken-2018 -TD

View File

@ -1 +1 @@
5:0:10 6.3 20220604 5:0:10 6.3 20220612

View File

@ -26,7 +26,7 @@
# use or other dealings in this Software without prior written # # use or other dealings in this Software without prior written #
# authorization. # # authorization. #
############################################################################## ##############################################################################
# $Id: dist.mk,v 1.1484 2022/06/04 10:24:10 tom Exp $ # $Id: dist.mk,v 1.1486 2022/06/12 10:22:30 tom Exp $
# Makefile for creating ncurses distributions. # Makefile for creating ncurses distributions.
# #
# This only needs to be used directly as a makefile by developers, but # This only needs to be used directly as a makefile by developers, but
@ -38,7 +38,7 @@ SHELL = /bin/sh
# These define the major/minor/patch versions of ncurses. # These define the major/minor/patch versions of ncurses.
NCURSES_MAJOR = 6 NCURSES_MAJOR = 6
NCURSES_MINOR = 3 NCURSES_MINOR = 3
NCURSES_PATCH = 20220604 NCURSES_PATCH = 20220612
# We don't append the patch to the version, since this only applies to releases # We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR) VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)

View File

@ -1,5 +1,5 @@
/**************************************************************************** /****************************************************************************
* Copyright 2019-2020,2021 Thomas E. Dickey * * Copyright 2019-2021,2022 Thomas E. Dickey *
* Copyright 1998-2016,2017 Free Software Foundation, Inc. * * Copyright 1998-2016,2017 Free Software Foundation, Inc. *
* * * *
* Permission is hereby granted, free of charge, to any person obtaining a * * Permission is hereby granted, free of charge, to any person obtaining a *
@ -37,7 +37,7 @@
#include <curses.priv.h> #include <curses.priv.h>
#include <ctype.h> #include <ctype.h>
MODULE_ID("$Id: lib_addch.c,v 1.138 2021/06/17 21:11:08 tom Exp $") MODULE_ID("$Id: lib_addch.c,v 1.141 2022/06/12 15:16:41 tom Exp $")
static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT); static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT);
@ -321,20 +321,29 @@ waddch_literal(WINDOW *win, NCURSES_CH_T ch)
int len = _nc_wacs_width(CharOf(ch)); int len = _nc_wacs_width(CharOf(ch));
int i; int i;
int j; int j;
wchar_t *chars;
if (len == 0) { /* non-spacing */ if (len == 0) { /* non-spacing */
if ((x > 0 && y >= 0) if ((x > 0 && y >= 0)
|| (win->_maxx >= 0 && win->_cury >= 1)) { || (win->_maxx >= 0 && win->_cury >= 1)) {
if (x > 0 && y >= 0) NCURSES_CH_T *dst;
chars = (win->_line[y].text[x - 1].chars); wchar_t *chars;
else if (x > 0 && y >= 0) {
chars = (win->_line[y - 1].text[win->_maxx].chars); for (j = x - 1; j >= 0; --j) {
if (!isWidecExt(win->_line[y].text[j])) {
win->_curx = (NCURSES_SIZE_T) j;
break;
}
}
dst = &(win->_line[y].text[j]);
} else {
dst = &(win->_line[y - 1].text[win->_maxx]);
}
chars = dst->chars;
for (i = 0; i < CCHARW_MAX; ++i) { for (i = 0; i < CCHARW_MAX; ++i) {
if (chars[i] == 0) { if (chars[i] == 0) {
TR(TRACE_VIRTPUT, TR(TRACE_VIRTPUT,
("added non-spacing %d: %x", ("adding non-spacing %s (level %d)",
x, (int) CharOf(ch))); _tracech_t(CHREF(ch)), i));
chars[i] = CharOf(ch); chars[i] = CharOf(ch);
break; break;
} }
@ -410,9 +419,9 @@ waddch_literal(WINDOW *win, NCURSES_CH_T ch)
testwrapping: testwrapping:
); );
TR(TRACE_VIRTPUT, ("cell (%ld, %ld..%d) = %s", TR(TRACE_VIRTPUT, ("cell (%d, %d..%d) = %s",
(long) win->_cury, (long) win->_curx, x - 1, win->_cury, win->_curx, x - 1,
_tracech_t(CHREF(ch)))); _tracech_t(CHREF(line->text[win->_curx]))));
if (x > win->_maxx) { if (x > win->_maxx) {
return wrap_to_next_line(win); return wrap_to_next_line(win);

View File

@ -1,5 +1,5 @@
/**************************************************************************** /****************************************************************************
* Copyright 2019,2020 Thomas E. Dickey * * Copyright 2019-2020,2022 Thomas E. Dickey *
* Copyright 1998-2016,2017 Free Software Foundation, Inc. * * Copyright 1998-2016,2017 Free Software Foundation, Inc. *
* * * *
* Permission is hereby granted, free of charge, to any person obtaining a * * Permission is hereby granted, free of charge, to any person obtaining a *
@ -45,7 +45,7 @@
#include <curses.priv.h> #include <curses.priv.h>
MODULE_ID("$Id: lib_addstr.c,v 1.57 2020/12/05 20:06:19 tom Exp $") MODULE_ID("$Id: lib_addstr.c,v 1.58 2022/06/11 20:12:04 tom Exp $")
NCURSES_EXPORT(int) NCURSES_EXPORT(int)
waddnstr(WINDOW *win, const char *astr, int n) waddnstr(WINDOW *win, const char *astr, int n)
@ -59,10 +59,11 @@ waddnstr(WINDOW *win, const char *astr, int n)
TR(TRACE_VIRTPUT | TRACE_ATTRS, TR(TRACE_VIRTPUT | TRACE_ATTRS,
("... current %s", _traceattr(WINDOW_ATTRS(win)))); ("... current %s", _traceattr(WINDOW_ATTRS(win))));
code = OK; code = OK;
TR(TRACE_VIRTPUT, ("str is not null, length = %d",
((n > 0) ? n : (int) strlen(str))));
if (n < 0) if (n < 0)
n = INT_MAX; n = INT_MAX;
TR(TRACE_VIRTPUT, ("str is not null, length = %d", n));
while ((*str != '\0') && (n-- > 0)) { while ((*str != '\0') && (n-- > 0)) {
NCURSES_CH_T ch; NCURSES_CH_T ch;
TR(TRACE_VIRTPUT, ("*str = %#o", UChar(*str))); TR(TRACE_VIRTPUT, ("*str = %#o", UChar(*str)));
@ -231,10 +232,11 @@ waddnwstr(WINDOW *win, const wchar_t *str, int n)
TR(TRACE_VIRTPUT | TRACE_ATTRS, TR(TRACE_VIRTPUT | TRACE_ATTRS,
("... current %s", _traceattr(WINDOW_ATTRS(win)))); ("... current %s", _traceattr(WINDOW_ATTRS(win))));
code = OK; code = OK;
TR(TRACE_VIRTPUT, ("str is not null, length = %d",
((n > 0) ? n : (int) wcslen(str))));
if (n < 0) if (n < 0)
n = INT_MAX; n = INT_MAX;
TR(TRACE_VIRTPUT, ("str is not null, length = %d", n));
while ((*str != L('\0')) && (n-- > 0)) { while ((*str != L('\0')) && (n-- > 0)) {
NCURSES_CH_T ch; NCURSES_CH_T ch;
TR(TRACE_VIRTPUT, ("*str[0] = %#lx", (unsigned long) *str)); TR(TRACE_VIRTPUT, ("*str[0] = %#lx", (unsigned long) *str));

View File

@ -1,5 +1,5 @@
/**************************************************************************** /****************************************************************************
* Copyright 2018-2019,2020 Thomas E. Dickey * * Copyright 2018-2020,2022 Thomas E. Dickey *
* Copyright 1998-2017,2018 Free Software Foundation, Inc. * * Copyright 1998-2017,2018 Free Software Foundation, Inc. *
* * * *
* Permission is hereby granted, free of charge, to any person obtaining a * * Permission is hereby granted, free of charge, to any person obtaining a *
@ -44,7 +44,7 @@
#define CUR SP_TERMTYPE #define CUR SP_TERMTYPE
#endif #endif
MODULE_ID("$Id: lib_traceatr.c,v 1.94 2020/02/02 23:34:34 tom Exp $") MODULE_ID("$Id: lib_traceatr.c,v 1.95 2022/06/11 22:40:56 tom Exp $")
#define COLOR_OF(c) ((c < 0) ? "default" : (c > 7 ? color_of(c) : colors[c].name)) #define COLOR_OF(c) ((c < 0) ? "default" : (c > 7 ? color_of(c) : colors[c].name))
@ -369,14 +369,15 @@ _tracecchar_t2(int bufnum, const cchar_t *ch)
_nc_wacs_width(ch->chars[PUTC_i]), _nc_wacs_width(ch->chars[PUTC_i]),
(unsigned long) ch->chars[PUTC_i]); (unsigned long) ch->chars[PUTC_i]);
(void) _nc_trace_bufcat(bufnum, temp); (void) _nc_trace_bufcat(bufnum, temp);
break; attr &= ~A_CHARTEXT; /* ignore WidecExt(ch) */
} } else {
for (n = 0; n < PUTC_n; n++) { for (n = 0; n < PUTC_n; n++) {
if (n) if (n)
(void) _nc_trace_bufcat(bufnum, ", "); (void) _nc_trace_bufcat(bufnum, ", ");
(void) _nc_trace_bufcat(bufnum, (void) _nc_trace_bufcat(bufnum,
_nc_tracechar(CURRENT_SCREEN, _nc_tracechar(CURRENT_SCREEN,
UChar(PUTC_buf[n]))); UChar(PUTC_buf[n])));
}
} }
} }
(void) _nc_trace_bufcat(bufnum, " }"); (void) _nc_trace_bufcat(bufnum, " }");

View File

@ -1,8 +1,8 @@
ncurses6 (6.3+20220604) unstable; urgency=low ncurses6 (6.3+20220612) unstable; urgency=low
* latest weekly patch * latest weekly patch
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 04 Jun 2022 06:24:10 -0400 -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 12 Jun 2022 06:22:30 -0400
ncurses6 (5.9-20131005) unstable; urgency=low ncurses6 (5.9-20131005) unstable; urgency=low

View File

@ -1,8 +1,8 @@
ncurses6 (6.3+20220604) unstable; urgency=low ncurses6 (6.3+20220612) unstable; urgency=low
* latest weekly patch * latest weekly patch
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 04 Jun 2022 06:24:10 -0400 -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 12 Jun 2022 06:22:30 -0400
ncurses6 (5.9-20131005) unstable; urgency=low ncurses6 (5.9-20131005) unstable; urgency=low

View File

@ -1,8 +1,8 @@
ncurses6 (6.3+20220604) unstable; urgency=low ncurses6 (6.3+20220612) unstable; urgency=low
* latest weekly patch * latest weekly patch
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 04 Jun 2022 06:24:10 -0400 -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 12 Jun 2022 06:22:30 -0400
ncurses6 (5.9-20120608) unstable; urgency=low ncurses6 (5.9-20120608) unstable; urgency=low

View File

@ -1,4 +1,4 @@
; $Id: mingw-ncurses.nsi,v 1.524 2022/06/04 10:24:10 tom Exp $ ; $Id: mingw-ncurses.nsi,v 1.526 2022/06/12 10:22:30 tom Exp $
; TODO add examples ; TODO add examples
; TODO bump ABI to 6 ; TODO bump ABI to 6
@ -10,7 +10,7 @@
!define VERSION_MAJOR "6" !define VERSION_MAJOR "6"
!define VERSION_MINOR "3" !define VERSION_MINOR "3"
!define VERSION_YYYY "2022" !define VERSION_YYYY "2022"
!define VERSION_MMDD "0604" !define VERSION_MMDD "0612"
!define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD} !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
!define MY_ABI "5" !define MY_ABI "5"

View File

@ -3,7 +3,7 @@
Summary: shared libraries for terminal handling Summary: shared libraries for terminal handling
Name: mingw32-ncurses6 Name: mingw32-ncurses6
Version: 6.3 Version: 6.3
Release: 20220604 Release: 20220612
License: X11 License: X11
Group: Development/Libraries Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz Source: ncurses-%{version}-%{release}.tgz

View File

@ -1,7 +1,7 @@
Summary: shared libraries for terminal handling Summary: shared libraries for terminal handling
Name: ncurses6 Name: ncurses6
Version: 6.3 Version: 6.3
Release: 20220604 Release: 20220612
License: X11 License: X11
Group: Development/Libraries Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz Source: ncurses-%{version}-%{release}.tgz

View File

@ -1,7 +1,7 @@
Summary: Curses library with POSIX thread support. Summary: Curses library with POSIX thread support.
Name: ncursest6 Name: ncursest6
Version: 6.3 Version: 6.3
Release: 20220604 Release: 20220612
License: X11 License: X11
Group: Development/Libraries Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz Source: ncurses-%{version}-%{release}.tgz