1 --- lib/converter.c.orig	Sun Nov 26 22:10:22 2000
2 +++ lib/converter.c	Mon Mar 18 19:49:56 2002
3 @@ -92,14 +92,14 @@
4  		if (ch == UCS_CHAR_NONE) {
5  			/* Incomplete character in input buffer */
6  			errno = EINVAL;
7 -			return res;
8 +			return (size_t)(-1);
9  		}
10  		if (ch == UCS_CHAR_INVALID) {
11  			/* Invalid character in source buffer */
12  			*inbytesleft += *inbuf - ptr;
13  			*inbuf = ptr;
14  			errno = EILSEQ;
15 -			return res;
16 +			return (size_t)(-1);
17  		}
18  		size = ICONV_CES_CONVERT_FROM_UCS(&(uc->to), ch,
19  		                                  outbuf, outbytesleft);
20 @@ -116,7 +116,7 @@
21  			*inbytesleft += *inbuf - ptr;
22  			*inbuf = ptr;
23  			errno = E2BIG;
24 -			return res;
25 +			return (size_t)(-1);
26  		}
27  	}
28  	return res;
29 @@ -156,14 +156,24 @@
30  {
31  	if (inbuf && *inbuf && inbytesleft && *inbytesleft > 0 && outbuf
32  			&& *outbuf && outbytesleft && *outbytesleft > 0) {
33 -		size_t len = *inbytesleft < *outbytesleft ? *inbytesleft
34 -							  : *outbytesleft;
35 +		size_t result, len;
36 +		if (*inbytesleft < *outbytesleft) {
37 +			result = 0;
38 +			len = *inbytesleft;
39 +		} else {
40 +			result = (size_t)(-1);
41 +			errno = E2BIG;
42 +			len = *outbytesleft;
43 +		}
44  		bcopy(*inbuf, *outbuf, len);
45  		*inbuf += len;
46  		*inbytesleft -= len;
47  		*outbuf += len;
48  		*outbytesleft -= len;
49 +
50 +		return result;
51  	}
52 +
53  	return 0;
54  }
55 
56