From 8be8fe46e9c3f9a452ec08f39b9271e5970efbc3 Mon Sep 17 00:00:00 2001 From: j8takagi Date: Fri, 12 Jun 2026 13:01:43 +0900 Subject: [PATCH] =?utf8?q?comet2monitor=E3=81=AE=E7=A9=BAEnter=E3=81=AE?= =?utf8?q?=E5=8B=95=E4=BD=9C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit last_buf == NULL の空Enter時に continue 追加(segfault修正) 通常コマンド処理の else ブランチで FREE(last_buf) 追加(メモリリーク修正) 空Enterリピート時に FREE(buf) 追加(メモリリーク修正) 末尾の FREE(last_buf) 削除(n リピート修正) https://claude.ai/share/e038a102-8d71-4dfd-92e1-da273ae54a86 --- src/monitor.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/monitor.c b/src/monitor.c index 777d6f0..afb59e6 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -415,7 +415,9 @@ void monitor() /* 前回実行したコマンドがなければ何もしない */ FREE(buf); fprintf(stdout, ">\n"); + continue; } else { + FREE(buf); buf = strdup_chk(last_buf, "monitor.buf_repeat"); cmdtype = MONREPEAT; } @@ -423,6 +425,7 @@ void monitor() strip_end(buf); /* 文字列末尾の改行と空白を削除 */ /* 履歴(ヒストリ)に追加 */ add_history(buf); + FREE(last_buf); last_buf = strdup_chk(buf, "monitor.last_buf"); } /* 実行コマンドをstdout に出力。ログに残すため */ @@ -441,5 +444,4 @@ void monitor() } } while(cmdtype == MONREPEAT); FREE(buf); - FREE(last_buf); } -- 2.47.3