bug-ncurses
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ncurses-5.7-20090530.patch.gz


From: Clemens Ladisch
Subject: Re: ncurses-5.7-20090530.patch.gz
Date: Tue, 02 Jun 2009 10:41:14 +0200
User-agent: Thunderbird 2.0.0.21 (Windows/20090302)

Thomas Dickey wrote:
>       + fix an infinite recursion when adding a legacy-coding 8-bit value
>         using insch() (report by Clemens Ladisch).

Thanks, but the unctrl() problem itself is still there.

unctrl() _never_ gets called with a wide character (wunctrl() uses
_nc_to_char()), so it should not try to handle wide characters at all.

Without that iswprint() call, the whole "#if USE_WIDEC_SUPPORT" branch
becomes superfluous.


--- ncurses-5.7-20090530.orig/ncurses/base/MKunctrl.awk
+++ ncurses-5.7-20090530/ncurses/base/MKunctrl.awk
@@ -36,12 +36,6 @@ BEGIN        {
                print "#include <curses.priv.h>"
                print "#include <ctype.h>"
                print ""
-               print "#if USE_WIDEC_SUPPORT"
-               print "#if HAVE_WCTYPE_H"
-               print "#include <wctype.h>"
-               print "#endif"
-               print "#endif"
-               print ""
                print "#undef unctrl"
                print ""
        }
@@ -156,18 +150,7 @@ END        {
                print  "\t\t && (check >= 128)"
                print  "\t\t && (check < 160))"
                printf "\t\t\tresult = %s_c1[check - 128];\n", stringname;
-               print  "\t\telse"
-               print  "#if USE_WIDEC_SUPPORT"
-               print  "\t\tif ((check >= 160)"
-               print  "\t\t && (check < 256)"
-               print  "\t\t && ((sp != 0)"
-               print  "\t\t  && ((sp->_legacy_coding > 0)"
-               print  "\t\t   || (sp->_legacy_coding == 0"
-               print  "\t\t       && (isprint(check) || iswprint(check))))))"
-               printf "\t\t\tresult = %s_c1[check - 128];\n", stringname;
-               print  "\t\telse"
-               print  "#else"
-               print  "\t\tif ((check >= 160)"
+               print  "\t\telse if ((check >= 160)"
                print  "\t\t && (check < 256)"
                print  "\t\t && ((sp != 0)"
                print  "\t\t  && ((sp->_legacy_coding > 0)"
@@ -175,7 +158,6 @@ END {
                print  "\t\t       && isprint(check)))))"
                printf "\t\t\tresult = %s_c1[check - 128];\n", stringname;
                print  "\t\telse"
-               print  "#endif /* USE_WIDEC_SUPPORT */"
                print  "#endif /* NCURSES_EXT_FUNCS */"
                printf "\t\t\tresult = %s_table[check];\n", stringname;
                print  "\t} else {"




reply via email to

[Prev in Thread] Current Thread [Next in Thread]