diff --git a/scp.c b/scp.c index f786ca48..fe44307d 100644 --- a/scp.c +++ b/scp.c @@ -13841,7 +13841,6 @@ int32 saved_quiet = sim_quiet; int32 saved_sim_switches = sim_switches; int32 saved_deb_switches = sim_deb_switches; struct timespec saved_deb_basetime = sim_deb_basetime; -char saved_debug_filename[CBUFSIZE]; if (sim_deb == NULL) /* no debug? */ return SCPE_OK; @@ -13853,9 +13852,11 @@ if (sim_deb == sim_log) { /* debug is log */ return SCPE_OK; } -if (!(saved_deb_switches & SWMASK ('B'))) { - strcpy (saved_debug_filename, sim_logfile_name (sim_deb, sim_deb_ref)); - +if ((saved_deb_switches & SWMASK ('B')) != 0) { + char saved_debug_filename[CBUFSIZE]; + + snprintf (saved_debug_filename, sizeof (saved_debug_filename), "%u %s", + (uint32)(sim_deb_buffer_size / (1024 * 1024)), sim_logfile_name (sim_deb, sim_deb_ref)); sim_quiet = 1; sim_set_deboff (0, NULL); sim_switches = saved_deb_switches; diff --git a/sim_console.c b/sim_console.c index 0e839ee5..6bf5a7a5 100644 --- a/sim_console.c +++ b/sim_console.c @@ -2389,10 +2389,11 @@ if (sim_deb_switches & SWMASK ('B')) { while (sim_debug_buffer_inuse > 0) { size_t write_size = MIN (sim_deb_buffer_size - offset, sim_debug_buffer_inuse); + size_t written; - fwrite (sim_deb_buffer + offset, 1, write_size, sim_deb); - sim_debug_buffer_inuse -= write_size; - offset += write_size; + written = fwrite (sim_deb_buffer + offset, 1, write_size, sim_deb); + sim_debug_buffer_inuse -= written; + offset += written; if (offset == sim_deb_buffer_size) offset = 0; } @@ -2403,6 +2404,7 @@ if (sim_deb_switches & SWMASK ('B')) { sim_close_logfile (&sim_deb_ref); sim_deb = NULL; sim_deb_switches = 0; +errno = 0; return sim_messagef (SCPE_OK, "Debug output disabled\n"); }