--- nono/lib/logger.cpp 2026/04/29 17:04:30 1.1.1.2 +++ nono/lib/logger.cpp 2026/04/29 17:04:51 1.1.1.4 @@ -1,13 +1,14 @@ // // nono -// Copyright (C) 2017 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // -#include "header.h" #include "logger.h" #include "mpu.h" -std::unique_ptr gLogger(new Logger()); // グローバル初期化 +// グローバルインスタンス +Logger gLogger; // コンストラクタ Logger::Logger() @@ -26,14 +27,16 @@ Logger::Write(const char *str) std::unique_lock lk(mtx); // パイプへ出力 (EOL まで出力する) for (const char *s = str; ; s++) { - // 一杯なら古いのを捨てて書き込み続ける - if (pipe.Enqueue(*s) == false) { - uint8 dummy; - pipe.Dequeue(&dummy); - pipe.Enqueue(*s); + if (pipe.IsFull()) { + // 一杯なら古い 1 行を捨てる + while (pipe.Dequeue() != '\0') { + // nop + } } - if (*s == '\0') + pipe.Enqueue(*s); + if (*s == '\0') { break; + } } // 必要なら標準出力にも出力 if (use_stdout) {