Comment 4 for bug 996084

Revision history for this message
Chris Hillery (ceejatec) wrote :

After discussions with Matthias, I have proposed a fix for this problem. The gist of the problem is that we did not previously have a situation where two items would both want to claim ownership of the same stream; in this case, a streamable base64 item was being used to create a streamable string item. The fix was to introduce a different factory for StreamableStringItem that takens a 'dependent' streamable item. The new item shares the istream from the dependent item, but NOT the StreamReleaser, and so the new item does not attempt to take ownership of the stream. However, the new item does maintain a reference to the original item, thus forcing the lifespan of the original item to be as long as its own. In this way they can share the stream without having to worry about which one will be destroyed first. I added Dennis's test case and confirmed that it runs fine with this change.