Hello, On some systems t/pmc/io_6.pasm fails because of a double free. The problem is that the clone call adds a reference to ParrotIO object, but the ParrotIO object is neither garbage collected nor refcounted so it gets destroyed when its first refrence is destroyed.
The solution of that memory problem is simple: just allocate a new ParrotIO in the clone call. But what should be the semantics of the cloned IO object? What happens with interleaving writes? clone P1, P0 print P1, "Hello" print P0, "World" First come, first serve seems right to me here. What about buffered io? Should the clone call flush the buffer, will the new object just get an empty buffer or even copy over the buffer data (this would lead to double output of the buffer). What happens to seek/tell. Should every object have its own file position pointer or should these be shared like in dup. What is the semantics of double close. First close wins or last close wins. Comments boe -- Juergen Boemmels [EMAIL PROTECTED] Fachbereich Physik Tel: ++49-(0)631-205-2817 Universitaet Kaiserslautern Fax: ++49-(0)631-205-3906 PGP Key fingerprint = 9F 56 54 3D 45 C1 32 6F 23 F6 C7 2F 85 93 DD 47