patchの当て方が分かった!
1年前の話になるが、synergyという素晴らしいソフトウェアに出会った。(その詳細については、当時の日記を)その時、MacBookで利用するには、ソースをダウンロードして、Bus errorを解消するためのパッチを当てる必要があった。正しいパッチの当て方を知らなかったので、試行錯誤しながら、Xcodeを起動して、手作業でコピーして、編集していた...。1年前の自分に「お疲れさま」と言ってあげたい。そして、「patch < OSX_BusError.patch」でいいんだよと。
synergyにパッチを当ててみる。
synergyは素晴らしいソフトウェアでありながら、地味だ。あまり話題に上がって来ないような気がする。OSX_BusError.patchも、多くのパッチに埋もれて見つけ難くなっていた...。(パッチの検索ページでStatus:をAnyにしてBrowseボタンを押すと表示された。 1541747 MAC OSX synergec BUS error patch)
ダウンロードするファイル
デスクトップで解凍して...
Index: COSXKeyState.cpp =================================================================== RCS file: /cvsroot/synergy2/synergy/lib/platform/COSXKeyState.cpp,v retrieving revision 1.11 diff -u -p -r1.11 COSXKeyState.cpp --- COSXKeyState.cpp 23 Mar 2006 06:03:20 -0000 1.11 +++ COSXKeyState.cpp 17 Aug 2006 05:02:39 -0000 @@ -790,6 +790,12 @@ COSXKeyState::CKeyResource::getKeyID(UIn str, GetScriptManagerVariable(smKeyScript), kCFAllocatorNull); + // sometimes CFStringCreate returns NULL, (e.g., Apple Korean encoding with char + // value 214 when start up.) if so, make it no key. otherwise, that NULL is given to + // CFStringCreateMutableCopy down Below, which makes a BUS ERROR. + if (cfString == 0x0) + return kKeyNone; + // convert to precomposed CFMutableStringRef mcfString = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, cfString);
- 3行目を確認して、synergy-1.3.1/lib/platform/COSXKeyState.cppに対するパッチだと予想。