-
Kevin Wolf authored
! kernel2: Beim Aufräumen von Ressourcen muss man aufpassen, dass man nicht Ressourcen wegräumt, die noch von einem zusammengesetzten Stream benutzt werden. Um das zu fixen, gestaltet dieser Commit die Funktionsweise von Pipes grundsätzlich um: Statt in einem Stream für Lesen und Schreiben auf zwei verschiedene Ressourcen zu verweisen und zwei Dateizeiger zu verwalten, sind das jetzt zwei unabhängige Streams, die mittels lio_composite_stream() zusammengesetzt werden. Gleichzeitig hat ein lio_stream* jetzt entweder s->is_composite und verweist auf zwei andere Streams (statt vorher Ressourcen), die jetzt auch gerefcountet werden, oder er ist ein normaler Stream und verweist auf eine Ressource und hat einen Dateizeiger. Alle Funktionen, die auf die Ressource zu einem Stream zugreifen wollen, müssen jetzt für zusammengesetzte Streams erst einmal bis zum Wurzelstream durchgehen. Das fixt Rot beim Schließen der letzten Instanz des zusammengesetzten stderr, das getterm produziert. * kernel2: lio_composite_stream() akzeptiert jetzt auch NULL für die beiden Parameter. In diesem Fall fehlt dem Ergebnisstream einfach die Les- bzw. Schreibbarkeit. Signed-off-by: Kevin Wolf <kevin@tyndur.org>
b854d122