static size_t utf8decode(char *, long *, size_t);
 static long utf8decodebyte(char, size_t *);
-static size_t utf8encode(long, char *, size_t);
+static size_t utf8encode(long, char *);
 static char utf8encodebyte(long, size_t);
 static size_t utf8len(char *);
 static size_t utf8validate(long *, size_t);
 }
 
 size_t
-utf8encode(long u, char *c, size_t clen) {
+utf8encode(long u, char *c) {
        size_t len, i;
 
        len = utf8validate(&u, 0);
-       if(clen < len)
+       if(len > UTF_SIZ)
                return 0;
        for(i = len - 1; i != 0; --i) {
                c[i] = utf8encodebyte(u, 0);
        buflen += ret;
        ptr = buf;
        while((charsize = utf8decode(ptr, &unicodep, buflen))) {
-               utf8encode(unicodep, s, UTF_SIZ);
+               utf8encode(unicodep, s);
                tputc(s, charsize);
                ptr += charsize;
                buflen -= charsize;
                if(IS_SET(MODE_8BIT)) {
                        if(*buf < 0177) {
                                c = *buf | 0x80;
-                               len = utf8encode(c, buf, UTF_SIZ);
+                               len = utf8encode(c, buf);
                        }
                } else {
                        buf[1] = buf[0];