X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fwidechar%2Flib_cchar.c;h=eee0519f2df68ce79ef9c026933693ce2c58d116;hp=62a1113ecaa61e7bb8e375024605b1f2acd5f613;hb=HEAD;hpb=1b93a8aeaacc07de6d2aa08e658402b54446f064;ds=sidebyside diff --git a/ncurses/widechar/lib_cchar.c b/ncurses/widechar/lib_cchar.c index 62a1113e..451c5dcb 100644 --- a/ncurses/widechar/lib_cchar.c +++ b/ncurses/widechar/lib_cchar.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2019-2021,2022 Thomas E. Dickey * * Copyright 2001-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -37,9 +37,9 @@ #include #include -MODULE_ID("$Id: lib_cchar.c,v 1.35 2021/01/17 00:04:08 tom Exp $") +MODULE_ID("$Id: lib_cchar.c,v 1.38 2022/07/27 08:03:16 tom Exp $") -/* +/* * The SuSv2 description leaves some room for interpretation. We'll assume wch * points to a string which is L'\0' terminated, contains at least one * character with strictly positive width, which must be the first, and @@ -105,7 +105,6 @@ getcchar(const cchar_t *wcval, void *opts) { int code = ERR; - int color_pair; TR(TRACE_CCALLS, (T_CALLED("getcchar(%p,%p,%p,%p,%p)"), (const void *) wcval, @@ -123,10 +122,13 @@ getcchar(const cchar_t *wcval, wchar_t *wp; int len; +#if HAVE_WMEMCHR len = ((wp = wmemchr(wcval->chars, L'\0', (size_t) CCHARW_MAX)) ? (int) (wp - wcval->chars) : CCHARW_MAX); - +#else + len = wcsnlen(wcval->chars, CCHARW_MAX); +#endif if (wch == NULL) { /* * If the value is a null, set the length to 1. @@ -136,6 +138,8 @@ getcchar(const cchar_t *wcval, } else if (attrs == 0 || pair_arg == 0) { code = ERR; } else if (len >= 0) { + int color_pair; + TR(TRACE_CCALLS, ("copy %d wchars, first is %s", len, _tracecchar_t(wcval))); *attrs = AttrOf(*wcval) & A_ATTRIBUTES;