Commit fbc44f92 authored by Sam Lantinga's avatar Sam Lantinga

UTF-32 by definition can't handle characters higher than 0x10FFFF

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401506
parent 3750cb6c
......@@ -669,7 +669,7 @@ size_t SDL_iconv(SDL_iconv_t cd,
case ENCODING_UTF32BE:
{
Uint8 *p = (Uint8 *)dst;
if ( ch > 0x7FFFFFFF ) {
if ( ch > 0x10FFFF ) {
ch = UNKNOWN_UNICODE;
}
if ( dstlen < 4 ) {
......@@ -686,7 +686,7 @@ size_t SDL_iconv(SDL_iconv_t cd,
case ENCODING_UTF32LE:
{
Uint8 *p = (Uint8 *)dst;
if ( ch > 0x7FFFFFFF ) {
if ( ch > 0x10FFFF ) {
ch = UNKNOWN_UNICODE;
}
if ( dstlen < 4 ) {
......
......@@ -3,7 +3,7 @@
#include "SDL.h"
static SDL_bool testutf16(char *data)
static SDL_bool testutf1632(char *data)
{
Uint32 *p = (Uint32 *)data;
while(*p) {
......@@ -63,8 +63,10 @@ int main(int argc, char *argv[])
size_t len = (widelen(ucs4)+1)*4;
for ( i = 0; i < SDL_arraysize(formats); ++i ) {
if ( (SDL_strncasecmp(formats[i], "UTF16", 5) == 0 ||
SDL_strncasecmp(formats[i], "UTF-16", 6) == 0) &&
!testutf16(ucs4) ) {
SDL_strncasecmp(formats[i], "UTF-16", 6) == 0 ||
SDL_strncasecmp(formats[i], "UTF32", 5) == 0 ||
SDL_strncasecmp(formats[i], "UTF-32", 6) == 0) &&
!testutf1632(ucs4) ) {
continue;
}
test[0] = SDL_iconv_string(formats[i], "UCS-4", ucs4, len);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment