Thanks for the report.  Yes, there is a bug in that code, although it wasn't 
quite what you thought.  Try replacing those two "for" loops with the following:

    for (StreamReplica* r1 = fReplicasAwaitingCurrentFrame; r1 != NULL;) {
      if (r1 == replicaBeingDeactivated) {
        if (r1 == fReplicasAwaitingCurrentFrame) fReplicasAwaitingCurrentFrame 
= r1->fNext;
        r1 = r1->fNext;
        replicaBeingDeactivated->fNext = NULL;
        break;
      } else {
        r1 = r1->fNext;
      }
    }
    for (StreamReplica* r2 = fReplicasAwaitingNextFrame; r2 != NULL;) {
      if (r2 == replicaBeingDeactivated) {
        if (r2 == fReplicasAwaitingNextFrame) fReplicasAwaitingNextFrame = 
r2->fNext;
        r2 = r2->fNext;
        replicaBeingDeactivated->fNext = NULL;
        break;
      } else {
        r2 = r2->fNext;
      }
    }
  }

If you find any problem with this, then please let us know ASAP.  Otherwise 
I'll release a new version of the code with this change.


Ross Finlayson
Live Networks, Inc.
http://www.live555.com/

_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to