patch.exe が異常終了してしまうときの対処

GnuWin32 patch.exe が異常終了してしまうときの対処方法を紹介します。

改行コードが LF になっていると異常終了します

入力するパッチファイルの改行コードが LF 0x0A になっていると以下のようなエラーメッセージが表示されて patch.exe が異常終了してしまいます。

patching file libpng-1.6.21/png.h Assertion failed: hunk, file ../patch-2.5.9-src/patch.c, line 354

This application has requested the Runtime to terminate it in an unusual way. Please contact the application’s support team for more information.

今回は libpng への APNG Patch 適用を例に 2 つの対処方法を紹介します。

方法 1. パッチファイルの改行コードを変更する

改行コードを指定できるテキストエディターを使用して パッチファイルの改行コードを CR + LF 0x0D, 0x0A に変更しておくことで対応することができます。

方法 2. 引数 –binary を指定する

patch.exe の実行時に --binary 引数を追加することで 改行コードが LF (0x0A) のみのパッチファイルでも異常終了せずに適用することができます。

コマンドプロンプト
D:¥temp>patch.exe --binary -p 0 < libpng-1.6.21-apng.patch patching file libpng-1.6.21/png.h patching file libpng-1.6.21/pngget.c patching file libpng-1.6.21/pnginfo.h patching file libpng-1.6.21/pngpread.c patching file libpng-1.6.21/pngpriv.h patching file libpng-1.6.21/pngread.c patching file libpng-1.6.21/pngrutil.c patching file libpng-1.6.21/pngset.c patching file libpng-1.6.21/pngstruct.h patching file libpng-1.6.21/pngtest.c patching file libpng-1.6.21/pngwrite.c patching file libpng-1.6.21/pngwutil.c patching file libpng-1.6.21/scripts/symbols.def

無事にパッチ適用が完了しました。

ユーザーアカウント制御(UAC)対応の patch.exe はこちらからどうぞ