diff --git a/OpenTK/Platform/X11/X11GLNative.cs b/OpenTK/Platform/X11/X11GLNative.cs index d7a429f8e..6805a1709 100644 --- a/OpenTK/Platform/X11/X11GLNative.cs +++ b/OpenTK/Platform/X11/X11GLNative.cs @@ -350,6 +350,9 @@ namespace OpenTK.Platform.X11 { EventHandler key_press = KeyPress; if (key_press != null) { for (int i = 0; i < status; i++) { + // ignore NULL char after non-ASCII input char, like ä or å on Finnish keyboard layout + if (chars[i] == '\0') continue; + KPEventArgs.KeyChar = chars[i]; key_press(this, KPEventArgs); } diff --git a/src/Client/Deflate.c b/src/Client/Deflate.c index b19d93b79..8b8c4b576 100644 --- a/src/Client/Deflate.c +++ b/src/Client/Deflate.c @@ -829,7 +829,7 @@ static ReturnCode Deflate_FlushBlock(DeflateState* state, Int32 len) { /* literals for last few bytes */ while (len > 0) { Deflate_Lit(state, *cur); - cur++; len--; + len--; cur++; } state->InputPosition = 0; diff --git a/src/Client/Platform.h b/src/Client/Platform.h index 19e24cd36..680f2b011 100644 --- a/src/Client/Platform.h +++ b/src/Client/Platform.h @@ -14,6 +14,7 @@ extern UInt8* Platform_NewLine; /* Newline for text */ extern UInt8 Platform_DirectorySeparator; extern ReturnCode ReturnCode_FileShareViolation; extern ReturnCode ReturnCode_FileNotFound; +extern ReturnCode ReturnCode_NotSupported; void Platform_Init(void); void Platform_Free(void); diff --git a/src/Client/Stream.c b/src/Client/Stream.c index 0fbac3fd1..20bbb64e9 100644 --- a/src/Client/Stream.c +++ b/src/Client/Stream.c @@ -86,11 +86,15 @@ ReturnCode Stream_Skip(Stream* stream, UInt32 count) { } static ReturnCode Stream_DefaultIO(Stream* stream, UInt8* data, UInt32 count, UInt32* modified) { - *modified = 0; return 1; + *modified = 0; return ReturnCode_NotSupported; } static ReturnCode Stream_DefaultClose(Stream* stream) { return 0; } -static ReturnCode Stream_DefaultSeek(Stream* stream, Int32 offset, Int32 seekType) { return 1; } -static ReturnCode Stream_DefaultGet(Stream* stream, UInt32* value) { *value = 0; return 1; } +static ReturnCode Stream_DefaultSeek(Stream* stream, Int32 offset, Int32 seekType) { + return ReturnCode_NotSupported; +} +static ReturnCode Stream_DefaultGet(Stream* stream, UInt32* value) { + *value = 0; return ReturnCode_NotSupported; +} void Stream_SetDefaultOps(Stream* stream) { stream->Read = Stream_DefaultIO; diff --git a/src/Client/WinPlatform.c b/src/Client/WinPlatform.c index 77f32d37d..010950938 100644 --- a/src/Client/WinPlatform.c +++ b/src/Client/WinPlatform.c @@ -24,6 +24,7 @@ UInt8* Platform_NewLine = "\r\n"; UInt8 Platform_DirectorySeparator = '\\'; ReturnCode ReturnCode_FileShareViolation = ERROR_SHARING_VIOLATION; ReturnCode ReturnCode_FileNotFound = ERROR_FILE_NOT_FOUND; +ReturnCode ReturnCode_NotSupported = ERROR_NOT_SUPPORTED; void Platform_Init(void) { heap = GetProcessHeap(); /* TODO: HeapCreate instead? probably not */ @@ -653,7 +654,7 @@ ReturnCode Platform_HttpGetRequestHeaders(AsyncRequest* request, void* handle, U } ReturnCode Platform_HttpGetRequestData(AsyncRequest* request, void* handle, void** data, UInt32 size, volatile Int32* progress) { - if (size == 0) return 1; + if (size == 0) return ERROR_NOT_SUPPORTED; *data = Platform_MemAlloc(size, 1); if (*data == NULL) ErrorHandler_Fail("Failed to allocate memory for http get data");