X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=form%2Ffty_int.c;h=70fe97d0356b5dbc136ca812937a6868e8836eab;hp=d06ab8b6f389921c5539167e7af298429cf2fbc3;hb=9028a6e05bf66890591f074dd510a43c10f4e984;hpb=5925150381bb42a4d8c7116d62c348a7b84309f3 diff --git a/form/fty_int.c b/form/fty_int.c index d06ab8b6..70fe97d0 100644 --- a/form/fty_int.c +++ b/form/fty_int.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2021 Thomas E. Dickey * * Copyright 1998-2010,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -35,7 +35,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_int.c,v 1.31 2020/12/12 01:15:37 tom Exp $") +MODULE_ID("$Id: fty_int.c,v 1.32 2021/03/27 23:49:58 tom Exp $") #if USE_WIDEC_SUPPORT #define isDigit(c) (iswdigit((wint_t)(c)) || isdigit(UChar(c))) @@ -170,11 +170,9 @@ Check_This_Field(FIELD *field, const void *argp) int prec = argi->precision; unsigned char *bp = (unsigned char *)field_buffer(field, 0); char *s = (char *)bp; - long val; - char buf[100]; bool result = FALSE; - while (*bp && *bp == ' ') + while (*bp == ' ') bp++; if (*bp) { @@ -183,13 +181,14 @@ Check_This_Field(FIELD *field, const void *argp) #if USE_WIDEC_SUPPORT if (*bp) { - bool blank = FALSE; int len; - int n; wchar_t *list = _nc_Widen_String((char *)bp, &len); if (list != 0) { + bool blank = FALSE; + int n; + result = TRUE; for (n = 0; n < len; ++n) { @@ -227,7 +226,8 @@ Check_This_Field(FIELD *field, const void *argp) #endif if (result) { - val = atol(s); + long val = atol(s); + if (low < high) { if (val < low || val > high) @@ -235,6 +235,8 @@ Check_This_Field(FIELD *field, const void *argp) } if (result) { + char buf[100]; + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) "%.*ld", (prec > 0 ? prec : 0), val); set_field_buffer(field, 0, buf);