Roman Kagan <rka...@mail.ru> writes:

> +     # workaround for a bug in svn serf backend (v1.8.5 and below):
> +     # store 3d argument to ->add_file() in a local variable, to make it
> +     # have the same lifetime as $fbat
> +     my $upa = $self->url_path($m->{file_a});
>       my $fbat = $self->add_file($self->repo_path($m->{file_b}), $pbat,
> -                             $self->url_path($m->{file_a}), $self->{r});
> +                             $upa, $self->{r});

Hmm, now that you put it that way, I wonder if the patch is correct.

Let me first rephrase the problem to verify that I understand the issue:

  $fbat keeps a pointer to the $upa string, without maintaining a
  reference to it.  When $fbat is destroyed, it needs this string, so we
  must ensure that the lifetime of $upa is at least as long as that of
  $fbat.

However, does Perl make any guarantees as to the order in which local
variables are unreferenced and then destroyed?  I can't find any such
guarantee.

In the absence of such, wouldn't we have to keep $upa in an outer,
separate scope to ensure that $fbat is destroyed first?

-- 
Thomas Rast
t...@thomasrast.ch
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to