Yoichi's diary


2007-06-29

_ [comp] malformed patch at line N

transparency3.patchを当てようとpatchするとエラーになる件について調査。
ftp://ftp.gnu.org/gnu/patch/patch-2.5.4.tar.gz をダウンロード
% tar zxf patch-2.5.4.tar.gz
% cd patch-2.5.4
% grep "malformed patch at" **/*
pch.c:    fatal ("malformed patch at line %s: %s",
static void malformed() が呼ばれると出る。
% grep -n malformed pch.c
79:static void malformed PARAMS ((void)) __attribute__ ((noreturn));
767:malformed (void)
770:    fatal ("malformed patch at line %s: %s",
991:                      malformed ();
1114:           malformed ();
1234:       malformed ();
1242:       malformed ();
1305:               malformed ();
1321:               malformed ();
1342:               malformed ();
1351:           malformed ();
1360:     malformed ();
どれかわからないのでgdb上で break を置いて実行するとL1342だとわかる:
	    case '+':
		if (filldst > p_end) {
		    free(s);
		    while (--filldst > p_ptrn_lines)
			free(p_line[filldst]);
		    p_end = fillsrc-1;
		    malformed ();
		}
		chars_read -= filldst == p_end && incomplete_line ();
		p_Char[filldst] = ch;
		p_line[filldst] = s;
		p_len[filldst++] = chars_read;
		break;
上のcaseから落ちてくるのでここだけ見てもよくわからない。 ひとまず問題を再現するデータを最小化(削ったり戻したりしながら):
--- ../emacs.orig/src/xterm.c	2007-02-15 13:10:24.000000000 +0900
+++ src/xterm.c	2007-02-18 16:41:32.000000000 +0900
@@ -951,1 +951,1 @@
 /***********************************************************************
デバッガで見ると違うとこで落ちてる。だめじゃん。削りすぎか。 続きはまた明日。 解決。cvsのとsvnので行数がずれてる
% diff -u transparency3.patch transparency3.patch.svn
--- transparency3.patch 2007-06-29 06:54:20.000000000 +0900                     +++ transparency3.patch.svn     2007-06-29 06:51:30.000000000 +0900
@@ -371,7 +371,7 @@
    defsubr (&Sx_delete_window_property);
 --- ../emacs.orig/src/xterm.c  2007-02-15 13:10:24.000000000 +0900
 +++ src/xterm.c        2007-02-18 16:41:32.000000000 +0900
-@@ -951,6 +951,58 @@
+@@ -951,6 +951,59 @@
    return FONT_TYPE_UNKNOWN;
  }
  
実際に足されている行を数えると53(=59-6)だったので、前者のパッチは矛盾を含んでいる。

_ [TV/CM] カルピス “いつか私が”篇

長澤まさみさん。

_ [misc] ヒルと林田

こないだの話、くらちくんがわかりやすい説明を作ってくれました。髪型についてはカツラバージョンと地毛バージョンのどちらのが類似性が高いだろうか。

_ [misc] 記憶さんさようなら

飲みすぎたのか記憶飛びました。南蛮亭の外で飲んでるとこから、電車乗り過ごしてタクシー乗ってる所に飛んで、タクシー降りた所から朝起きる(しかも何故か裸で寝てたし)まで飛びました。