X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fwidechar%2Flib_unget_wch.c;h=e18a2960fae896db32bc5e86f24f082285cd23b1;hp=1d2cf83ef8d2fcf0cdf7a0e1d11b18003a2a0f42;hb=3996fe0bf797f113d6abc4329cc869951735a4d8;hpb=7a6bbc8cf41c5186d46accc3d08622dc86526b34 diff --git a/ncurses/widechar/lib_unget_wch.c b/ncurses/widechar/lib_unget_wch.c index 1d2cf83e..e18a2960 100644 --- a/ncurses/widechar/lib_unget_wch.c +++ b/ncurses/widechar/lib_unget_wch.c @@ -39,7 +39,7 @@ #include -MODULE_ID("$Id: lib_unget_wch.c,v 1.11 2009/04/04 23:57:25 tom Exp $") +MODULE_ID("$Id: lib_unget_wch.c,v 1.13 2009/10/24 21:52:49 tom Exp $") /* * Wrapper for wcrtomb() which obtains the length needed for the given @@ -55,13 +55,13 @@ _nc_wcrtomb(char *target, wchar_t source, mbstate_t * state) const wchar_t *tempp = temp; temp[0] = source; temp[1] = 0; - result = wcsrtombs(NULL, &tempp, 0, state); + result = (int) wcsrtombs(NULL, &tempp, 0, state); } else { - result = wcrtomb(target, source, state); + result = (int) wcrtomb(target, source, state); } if (!isEILSEQ(result) && (result == 0)) result = 1; - return result; + return (size_t) result; } NCURSES_EXPORT(int) @@ -72,7 +72,7 @@ NCURSES_SP_NAME(unget_wch) (NCURSES_SP_DCLx const wchar_t wch) size_t length; int n; - T((T_CALLED("unget_wch(%p, %#lx)"), SP_PARM, (unsigned long) wch)); + T((T_CALLED("unget_wch(%p, %#lx)"), (void *) SP_PARM, (unsigned long) wch)); init_mb(state); length = _nc_wcrtomb(0, wch, &state); @@ -83,10 +83,12 @@ NCURSES_SP_NAME(unget_wch) (NCURSES_SP_DCLx const wchar_t wch) if ((string = (char *) malloc(length)) != 0) { init_mb(state); - wcrtomb(string, wch, &state); + /* ignore the result, since we already validated the character */ + IGNORE_RC((int) wcrtomb(string, wch, &state)); for (n = (int) (length - 1); n >= 0; --n) { - if (NCURSES_SP_NAME(ungetch) (NCURSES_SP_ARGx string[n]) != OK) { + if (NCURSES_SP_NAME(ungetch) (NCURSES_SP_ARGx + UChar(string[n])) !=OK) { result = ERR; break; }