diff --git a/fmt/fmt_pad.c b/fmt/fmt_pad.c index 27afeef..71201f1 100644 --- a/fmt/fmt_pad.c +++ b/fmt/fmt_pad.c @@ -8,7 +8,8 @@ size_t fmt_pad(char* dest,const char* src,size_t srclen,size_t padlen,size_t max long todo; char* olddest=dest; char* max=dest+maxlen; - todo=padlen-srclen; + if ((long)srclen<0 || (long)padlen<0 || (long)maxlen<0) return 0; + todo=(long)(padlen-srclen); if (dest==0) { unsigned long sum=srclen>padlen?srclen:padlen; return sum>maxlen?maxlen:sum; @@ -17,9 +18,9 @@ size_t fmt_pad(char* dest,const char* src,size_t srclen,size_t padlen,size_t max if (dest>max) break; *dest=' '; ++dest; } - for (todo=srclen; todo>0; --todo) { + for (todo=(long)srclen>maxlen?maxlen:srclen; todo>0; --todo) { if (dest>max) break; *dest=*src; ++dest; ++src; } - return dest-olddest; + return (size_t)(dest-olddest); }