diff --git a/fmt/fmt_fill.c b/fmt/fmt_fill.c index b14bac7..bacc06e 100644 --- a/fmt/fmt_fill.c +++ b/fmt/fmt_fill.c @@ -8,12 +8,14 @@ size_t fmt_fill(char* dest,size_t srclen,size_t padlen,size_t maxlen) { long todo; char* olddest=dest; char* max=dest+maxlen; + if ((long)padlen<0 || (long)maxlen<0) return 0; + if (srclen>maxlen) return maxlen; if (dest==0) { unsigned long sum=srclen>padlen?srclen:padlen; return sum>maxlen?maxlen:sum; } dest+=srclen; - for (todo=padlen-srclen; todo>0; --todo) { + for (todo=(long)(padlen-srclen); todo>0; --todo) { if (dest>max) break; *dest=' '; ++dest; }