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
8419894db5
commit
7bd3ce6477
|
|
@ -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