On Tue, Oct 18, 2011 at 17:45,  <[email protected]> wrote:
>...
> +++ subversion/trunk/subversion/libsvn_wc/entries.c Tue Oct 18 21:45:09 2011
>...
> -  if (entry->absent)
> +  else if (entry->absent)
>     {
> -      SVN_ERR_ASSERT(base_node && !working_node);
> +      SVN_ERR_ASSERT(base_node && !working_node && !below_working_node);

We should also assert for parent_node here (needed below). An absent
node always needs a parent, so the assertion should be fine.

>...
> @@ -1873,9 +1875,22 @@ write_entry(struct write_baton **entry_n
>
>       if (entry->deleted)
>         {
> -          base_node->presence = svn_wc__db_status_not_present;
> +          SVN_ERR_ASSERT(base_node->presence == 
> svn_wc__db_status_not_present);

Yup.

> +          /* ### should be svn_node_unknown, but let's store what we have. */
> +          base_node->kind = entry->kind;
> +        }
> +      else if (entry->absent)
> +        {
> +          SVN_ERR_ASSERT(base_node->presence
> +                                == svn_wc__db_status_server_excluded);
>           /* ### should be svn_node_unknown, but let's store what we have. */
>           base_node->kind = entry->kind;
> +
> +          /* Store the most likely revision in the node to avoid
> +             base nodes without a valid revision. Of course
> +             we remember that the data is still incomplete. */
> +          if (!SVN_IS_VALID_REVNUM(base_node->revision) && parent_node->base)
> +            base_node->revision = parent_node->base->revision;

Here: parent_node is dereferenced. As I said, it should be non-NULL
anyways, but for clarity we can assert that.

>...

There are some later changes from Philip which may cause a problem.
I'll note that separately.

This change looks right. Thanks!

Cheers,
-g

Reply via email to