mirror of
https://github.com/simh/simh.git
synced 2026-03-03 01:58:53 +00:00
SCP: Fix memory debug buffer logic to properly flush and subsequently continue
Flushes happen: 1) when exiting sim_instr() 2) prior to explicitly aborting execution
This commit is contained in:
9
scp.c
9
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;
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user