X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fstrftime.c;h=acebc9adfad65b9f968c96055b50d26ec38f89fc;hb=4a1579d7560659ef5723325726eda14490a967f6;hp=0a02b50774450ab234e3c3c3d0bc77aa28bad5a3;hpb=1c4cf2052ce432fb10a5405879f3b4d8f672e81c;p=gnulib.git diff --git a/lib/strftime.c b/lib/strftime.c index 0a02b5077..acebc9adf 100644 --- a/lib/strftime.c +++ b/lib/strftime.c @@ -172,15 +172,16 @@ extern char *tzname[]; #define add(n, f) \ do \ { \ - int _n = (n); \ - int _delta = width - _n; \ - int _incr = _n + (_delta > 0 ? _delta : 0); \ - if ((size_t) _incr >= maxsize - i) \ + size_t _n = (n); \ + size_t _w = (width < 0 ? 0 : width); \ + size_t _incr = _n < _w ? _w : _n; \ + if (_incr >= maxsize - i) \ return 0; \ if (p) \ { \ - if (digits == 0 && _delta > 0) \ + if (digits == 0 && _n < _w) \ { \ + size_t _delta = width - _n; \ if (pad == L_('0')) \ memset_zero (p, _delta); \ else \