Module Name:    src
Committed By:   martin
Date:           Wed Dec 21 09:38:38 UTC 2022

Modified Files:
        src/lib/libcurses [netbsd-10]: addbytes.c slk.c

Log Message:
Pull up following revision(s) (requested by blymn in ticket #15):

        lib/libcurses/slk.c: revision 1.21
        lib/libcurses/addbytes.c: revision 1.68

Backout change to addnstr that broke other applications as n should be
the number of bytes to add - for multibyte characters n will be > 1.

Fix __slk_draw to pass in the actual length of the label instead of
the default label length because wide characters may make the
actual string length longer than the slk display length.


To generate a diff of this commit:
cvs rdiff -u -r1.67 -r1.67.2.1 src/lib/libcurses/addbytes.c
cvs rdiff -u -r1.20 -r1.20.2.1 src/lib/libcurses/slk.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libcurses/addbytes.c
diff -u src/lib/libcurses/addbytes.c:1.67 src/lib/libcurses/addbytes.c:1.67.2.1
--- src/lib/libcurses/addbytes.c:1.67	Mon Dec 12 21:14:15 2022
+++ src/lib/libcurses/addbytes.c	Wed Dec 21 09:38:38 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: addbytes.c,v 1.67 2022/12/12 21:14:15 blymn Exp $	*/
+/*	$NetBSD: addbytes.c,v 1.67.2.1 2022/12/21 09:38:38 martin Exp $	*/
 
 /*
  * Copyright (c) 1987, 1993, 1994
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)addbytes.c	8.4 (Berkeley) 5/4/94";
 #else
-__RCSID("$NetBSD: addbytes.c,v 1.67 2022/12/12 21:14:15 blymn Exp $");
+__RCSID("$NetBSD: addbytes.c,v 1.67.2.1 2022/12/21 09:38:38 martin Exp $");
 #endif
 #endif				/* not lint */
 
@@ -118,7 +118,7 @@ _cursesi_waddbytes(WINDOW *win, const ch
 	int		*py = &win->cury, *px = &win->curx, err;
 	__LINE		*lp;
 #ifdef HAVE_WCHAR
-	int		n, width;
+	int		n;
 	cchar_t		cc;
 	wchar_t		wc;
 	mbstate_t	st;
@@ -170,18 +170,14 @@ _cursesi_waddbytes(WINDOW *win, const ch
 		}
 
 		__CTRACE(__CTRACE_INPUT,
-		    "ADDBYTES WIDE(0x%x [%s], %x) at (%d, %d), ate %d bytes\n",
+		    "ADDBYTES WIDE(0x%04x [%s], %x) at (%d, %d), ate %d bytes\n",
 		    (unsigned)wc, unctrl((unsigned)wc), attr, *py, *px, n);
 		cc.vals[0] = wc;
 		cc.elements = 1;
 		cc.attributes = attr;
 		err = _cursesi_addwchar(win, &lp, py, px, &cc, char_interp);
 		bytes += n;
-
-		width = wcwidth(wc);
-		if (width < 0)
-			width = 1;
-		count -= width;
+		count -= n;
 #endif
 	}
 

Index: src/lib/libcurses/slk.c
diff -u src/lib/libcurses/slk.c:1.20 src/lib/libcurses/slk.c:1.20.2.1
--- src/lib/libcurses/slk.c:1.20	Tue Apr 12 07:03:04 2022
+++ src/lib/libcurses/slk.c	Wed Dec 21 09:38:38 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: slk.c,v 1.20 2022/04/12 07:03:04 blymn Exp $	*/
+/*	$NetBSD: slk.c,v 1.20.2.1 2022/12/21 09:38:38 martin Exp $	*/
 
 /*-
  * Copyright (c) 2017 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 #include <limits.h>
 #ifndef lint
-__RCSID("$NetBSD: slk.c,v 1.20 2022/04/12 07:03:04 blymn Exp $");
+__RCSID("$NetBSD: slk.c,v 1.20.2.1 2022/12/21 09:38:38 martin Exp $");
 #endif				/* not lint */
 
 #include <limits.h>
@@ -819,6 +819,9 @@ __slk_draw(SCREEN *screen, int labnum)
 	wchar_t wc[2];
 #endif
 
+	__CTRACE(__CTRACE_INPUT, "__slk_draw: screen %p, label %d\n", screen,
+	    labnum);
+
 	if (screen->slk_hidden)
 		return OK;
 
@@ -834,7 +837,7 @@ __slk_draw(SCREEN *screen, int labnum)
 		    (screen->slk_window->flags & __SCROLLOK) ||
 		    ((l->x + screen->slk_label_len) < screen->slk_window->maxx)) {
 			retval = mvwaddnstr(screen->slk_window, 0, l->x,
-			    l->label, screen->slk_label_len);
+			    l->label, strlen(l->label));
 		} else {
 			lcnt = 0;
 			tx = 0;

Reply via email to