Matt Fowles <[EMAIL PROTECTED]> wrote:

> This patch make the problem case submitted by Jeff Clites work.  All
> tests pass, and his sample has been added to the tests.

>      struct RegisterChunkBuf* top = stack->top;
>      if (top->used > 1) {
> +        top->used--;

Thanks for the patch *but*:

That's changing the COWed copy. It does the right thing for the test
case but is still wrong.

As already stated:
- COWed buffers need distinct buffer headers pointing to the same
  buffer memory
- unCOWing (regstack_copy_chunk) allocates new buffer memory and
  resets the COW flag

Its like string.c: make_COW_reference() and unmake_COW()

This is needed for the register stacks and for stacks.c too.

leo

Reply via email to