Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ports-kde
Path: blob/main/converters/iconv/files/patch-lib__converter.c
16461 views
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
57