summaryrefslogtreecommitdiffstats
path: root/utf8.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2009-11-24 15:34:11 -0800
committerKaz Kylheku <kaz@kylheku.com>2009-11-24 15:34:11 -0800
commitc9589217a057869582aa6a5ec1dbd048a525455e (patch)
treed1a0310b5f78647e21757ec1c349bee9285d2157 /utf8.c
parentc542db95be66e6db56dba1c54551ffca9afdf584 (diff)
downloadtxr-c9589217a057869582aa6a5ec1dbd048a525455e.tar.gz
txr-c9589217a057869582aa6a5ec1dbd048a525455e.tar.bz2
txr-c9589217a057869582aa6a5ec1dbd048a525455e.zip
Changes to make the code portable to C++ compilers, which
can be taken advantage of for better diagnostics.
Diffstat (limited to 'utf8.c')
-rw-r--r--utf8.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/utf8.c b/utf8.c
index eedd503d..c5c76761 100644
--- a/utf8.c
+++ b/utf8.c
@@ -80,8 +80,8 @@ size_t utf8_from_uc(wchar_t *wdst, const unsigned char *src)
case utf8_more3:
if (ch >= 0x80 && ch < 0xc0) {
wch <<= 6;
- wch |= (ch & 0x3f);
- if (--state == utf8_init) {
+ state = (enum utf8_state) (state - 1);
+ if (state == utf8_init) {
if (wdst)
*wdst++ = wch;
nchar++;
@@ -261,7 +261,8 @@ wint_t utf8_decode(utf8_decoder_t *ud, int (*get)(void *ctx), void *ctx)
if (ch >= 0x80 && ch < 0xc0) {
ud->wch <<= 6;
ud->wch |= (ch & 0x3f);
- if (--ud->state == utf8_init) {
+ ud->state = (enum utf8_state) (ud->state - 1);
+ if (ud->state == utf8_init) {
ud->back = ud->tail;
return ud->wch;
}