--- synergy-1.3.1.orig/lib/io/CStreamBuffer.cpp 2005-04-23 20:02:16.000000000 +0900 +++ synergy-1.3.1/lib/io/CStreamBuffer.cpp 2006-05-31 00:21:53.203125000 +0900 @@ -36,6 +36,7 @@ CStreamBuffer::peek(UInt32 n) { assert(n <= m_size); + if(!m_size) return NULL; // mod: check chunk size first // reserve space in first chunk ChunkList::iterator head = m_chunks.begin(); --- synergy-1.3.1.orig/lib/net/CSocketMultiplexer.cpp 2005-07-21 21:10:52.000000000 +0900 +++ synergy-1.3.1/lib/net/CSocketMultiplexer.cpp 2006-05-31 00:23:24.953125000 +0900 @@ -198,10 +198,11 @@ deleteCursor(cursor); } - int status; + int status = 0; // mod: initialization required try { // check for status - status = ARCH->pollSocket(&pfds[0], pfds.size(), -1); + // mod: check vector size before using this + if(pfds.size()) status = ARCH->pollSocket(&pfds[0], pfds.size(), -1); } catch (XArchNetwork& e) { LOG((CLOG_WARN "error in socket multiplexer: %s", e.what().c_str())); --- synergy-1.3.1.orig/lib/platform/CMSWindowsKeyState.cpp 2006-04-02 12:16:40.000000000 +0900 +++ synergy-1.3.1/lib/platform/CMSWindowsKeyState.cpp 2006-07-12 05:18:00.921875000 +0900 @@ -64,7 +64,7 @@ /* 0x01a */ { kKeyNone }, // undefined /* 0x01b */ { kKeyEscape }, // VK_ESCAPE /* 0x01c */ { kKeyHenkan }, // VK_CONVERT - /* 0x01d */ { kKeyNone }, // VK_NONCONVERT + /* 0x01d */ { kKeyMuhenkan }, // VK_NONCONVERT /* 0x01e */ { kKeyNone }, // VK_ACCEPT /* 0x01f */ { kKeyNone }, // VK_MODECHANGE /* 0x020 */ { kKeyNone }, // VK_SPACE @@ -277,9 +277,9 @@ /* 0x0ef */ { kKeyNone }, // OEM specific /* 0x0f0 */ { kKeyNone }, // OEM specific /* 0x0f1 */ { kKeyNone }, // OEM specific - /* 0x0f2 */ { kKeyNone }, // OEM specific - /* 0x0f3 */ { kKeyNone }, // OEM specific - /* 0x0f4 */ { kKeyNone }, // OEM specific + /* 0x0f2 */ { kKeyOEMCopy }, // VK_OEM_COPY + /* 0x0f3 */ { kKeyZenkaku }, // VK_OEM_AUTO + /* 0x0f4 */ { kKeyZenkaku }, // VK_OEM_ENLW /* 0x0f5 */ { kKeyNone }, // OEM specific /* 0x0f6 */ { kKeyNone }, // VK_ATTN /* 0x0f7 */ { kKeyNone }, // VK_CRSEL @@ -534,9 +534,9 @@ /* 0x1ef */ { kKeyNone }, // OEM specific /* 0x1f0 */ { kKeyNone }, // OEM specific /* 0x1f1 */ { kKeyNone }, // OEM specific - /* 0x1f2 */ { kKeyNone }, // OEM specific - /* 0x1f3 */ { kKeyNone }, // OEM specific - /* 0x1f4 */ { kKeyNone }, // OEM specific + /* 0x1f2 */ { kKeyNone }, // VK_OEM_COPY + /* 0x1f3 */ { kKeyNone }, // VK_OEM_AUTO + /* 0x1f4 */ { kKeyNone }, // VK_OEM_ENLW /* 0x1f5 */ { kKeyNone }, // OEM specific /* 0x1f6 */ { kKeyNone }, // VK_ATTN /* 0x1f7 */ { kKeyNone }, // VK_CRSEL @@ -1150,6 +1150,11 @@ else { // found in table switch (m_buttonToVK[i]) { + case VK_KANJI: + case VK_OEM_AUTO: + case VK_OEM_ENLW: + item.m_id = kKeyZenkaku; + break; case VK_TAB: // add kKeyLeftTab, too item.m_id = kKeyLeftTab; --- synergy-1.3.1.orig/lib/synergy/KeyTypes.h 2006-02-20 11:14:56.000000000 +0900 +++ synergy-1.3.1/lib/synergy/KeyTypes.h 2006-05-31 01:33:39.140625000 +0900 @@ -103,9 +103,11 @@ static const KeyID kKeyScrollLock = 0xEF14; static const KeyID kKeySysReq = 0xEF15; static const KeyID kKeyEscape = 0xEF1B; +static const KeyID kKeyMuhenkan = 0xEF22; /* Cancel Conversion */ static const KeyID kKeyHenkan = 0xEF23; /* Start/Stop Conversion */ static const KeyID kKeyZenkaku = 0xEF2A; /* Zenkaku/Hankaku */ static const KeyID kKeyDelete = 0xEFFF; /* Delete, rubout */ +static const KeyID kKeyOEMCopy = 0xEF27; /* OEMCopy(Kana in Japanese keyboard) */ // cursor control static const KeyID kKeyHome = 0xEF50;