diff --git a/src/util/string.c b/src/util/string.c index 4a9e35de5..7d1b92c59 100644 --- a/src/util/string.c +++ b/src/util/string.c @@ -124,11 +124,13 @@ static const uint8_t _utf8len[0x40] = { }; uint32_t utf8Char(const char** unicode, size_t* length) { - if (*length == 0) { + if (length && *length == 0) { return 0; } unsigned char byte = **unicode; - --*length; + if (length) { + --*length; + } ++*unicode; if (!(byte & 0x80)) { return byte; @@ -140,7 +142,7 @@ uint32_t utf8Char(const char** unicode, size_t* length) { if (numBytes == 0) { return 0xFFFD; } - if (*length + 1 < numBytes) { + if (length && *length + 1 < numBytes) { *length = 0; return 0xFFFD; } @@ -148,7 +150,9 @@ uint32_t utf8Char(const char** unicode, size_t* length) { for (i = 1; i < numBytes; ++i) { unichar <<= 6; byte = **unicode; - --*length; + if (length) { + --*length; + } ++*unicode; if ((byte & 0xC0) != 0x80) { return 0;