]> j8takagi.net git repositories - yacasl2.git/commitdiff
comet2monitorの空Enterの動作を修正
authorj8takagi <j8takagi@nifty.com>
Fri, 12 Jun 2026 04:01:43 +0000 (13:01 +0900)
committerj8takagi <j8takagi@nifty.com>
Fri, 12 Jun 2026 04:01:43 +0000 (13:01 +0900)
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

index 777d6f0dc6ba604a992210f91bb06c0ca58a0f5e..afb59e6314d4b20bfb6a08f7033dc9437160511a 100644 (file)
@@ -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);
 }