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
/* 前回実行したコマンドがなければ何もしない */
FREE(buf);
fprintf(stdout, ">\n");
+ continue;
} else {
+ FREE(buf);
buf = strdup_chk(last_buf, "monitor.buf_repeat");
cmdtype = MONREPEAT;
}
strip_end(buf); /* 文字列末尾の改行と空白を削除 */
/* 履歴(ヒストリ)に追加 */
add_history(buf);
+ FREE(last_buf);
last_buf = strdup_chk(buf, "monitor.last_buf");
}
/* 実行コマンドをstdout に出力。ログに残すため */
}
} while(cmdtype == MONREPEAT);
FREE(buf);
- FREE(last_buf);
}