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.
This commit is contained in:
parent
7457a2684b
commit
06aa693852
|
|
@ -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…
Reference in New Issue