Browse Source

A new fix for Bug #331: "XSpice skips digital output point".

The problem was caused by removing an output queue from the "modified"
list when it had been modified by processing one of its events.
pre-master-46
Giles Atkinson 3 years ago
committed by Holger Vogt
parent
commit
06aa693852
  1. 21
      src/xspice/evt/evtbackup.c

21
src/xspice/evt/evtbackup.c

@ -618,17 +618,26 @@ static void EVTbackup_output_queue(
}
output_queue->next_time = next_time;
/* Update the modified list by looking for any queued events */
/* with posted time > last_time */
/* Update the modified list by looking for events that were processed
* or queued in the current timestep.
*/
for(i = 0, j = 0; i < num_modified; i++) {
output_index = output_queue->modified_index[i];
output = *(output_queue->last_step[output_index]);
while(output) {
if(output->posted_time > output_queue->last_time)
break;
output = output->next;
if (output_queue->current[output_index] ==
output_queue->last_step[output_index]) {
/* Nothing now removed from the queue,
* but it may have been modified by an addition.
*/
while(output) {
if(output->posted_time > output_queue->last_time)
break;
output = output->next;
}
}
if(! output) {

Loading…
Cancel
Save