Concatenation can be reset by next(nullptr).

Added check against double opening while shut() is allowed to be
repeatedly invoked. next() might be called before or after open().