summaryrefslogtreecommitdiffstats
path: root/lib/libiconv_modules/BIG5
diff options
context:
space:
mode:
authortijl <tijl@FreeBSD.org>2014-03-04 11:43:01 +0000
committertijl <tijl@FreeBSD.org>2014-03-04 11:43:01 +0000
commit64a908c93597fc7a32a06f4c07bfd9c9006c6062 (patch)
tree5045c4e0aaa9e69b40b3b439246baa178fa13df7 /lib/libiconv_modules/BIG5
parent4dd6e22c185e4b2e10499d050b5f3a25354a0f02 (diff)
downloadFreeBSD-src-64a908c93597fc7a32a06f4c07bfd9c9006c6062.zip
FreeBSD-src-64a908c93597fc7a32a06f4c07bfd9c9006c6062.tar.gz
MFC r262441-262442,262447,262461-262464,262655:
- Consistently pass around context information using a simple pointer. This fixes some dereferencing bugs in Chinese character set conversions. - Fix Simplified Chinese character set conversions by switching around the fields of an internal struct so it corresponds with the way variables of this type are initialised. - Fix an array index out of bounds bug in iconv VIQR (Vietnamese) module. - Silence gcc warning about unsigned comparison with 0. Also record r258316 and r258587 as merged so they no longer show up as eligible. PR: 185964 Submitted by: Manuel Mausz <manuel-freebsd@mausz.at>
Diffstat (limited to 'lib/libiconv_modules/BIG5')
-rw-r--r--lib/libiconv_modules/BIG5/citrus_big5.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/libiconv_modules/BIG5/citrus_big5.c b/lib/libiconv_modules/BIG5/citrus_big5.c
index e79b162..d0e7047 100644
--- a/lib/libiconv_modules/BIG5/citrus_big5.c
+++ b/lib/libiconv_modules/BIG5/citrus_big5.c
@@ -172,7 +172,7 @@ _citrus_BIG5_check_excludes(_BIG5EncodingInfo *ei, wint_t c)
}
static int
-_citrus_BIG5_fill_rowcol(void ** __restrict ctx, const char * __restrict s,
+_citrus_BIG5_fill_rowcol(void * __restrict ctx, const char * __restrict s,
uint64_t start, uint64_t end)
{
_BIG5EncodingInfo *ei;
@@ -191,7 +191,7 @@ _citrus_BIG5_fill_rowcol(void ** __restrict ctx, const char * __restrict s,
static int
/*ARGSUSED*/
-_citrus_BIG5_fill_excludes(void ** __restrict ctx,
+_citrus_BIG5_fill_excludes(void * __restrict ctx,
const char * __restrict s __unused, uint64_t start, uint64_t end)
{
_BIG5EncodingInfo *ei;
@@ -237,7 +237,6 @@ static int
_citrus_BIG5_encoding_module_init(_BIG5EncodingInfo * __restrict ei,
const void * __restrict var, size_t lenvar)
{
- void *ctx = (void *)ei;
const char *s;
int err;
@@ -259,9 +258,9 @@ _citrus_BIG5_encoding_module_init(_BIG5EncodingInfo * __restrict ei,
}
/* fallback Big5-1984, for backward compatibility. */
- _citrus_BIG5_fill_rowcol((void **)&ctx, "row", 0xA1, 0xFE);
- _citrus_BIG5_fill_rowcol((void **)&ctx, "col", 0x40, 0x7E);
- _citrus_BIG5_fill_rowcol((void **)&ctx, "col", 0xA1, 0xFE);
+ _citrus_BIG5_fill_rowcol(ei, "row", 0xA1, 0xFE);
+ _citrus_BIG5_fill_rowcol(ei, "col", 0x40, 0x7E);
+ _citrus_BIG5_fill_rowcol(ei, "col", 0xA1, 0xFE);
return (0);
}
OpenPOWER on IntegriCloud