On Thu, Oct 20, 2011 at 05:17:36PM +0200, Stefan Sperling wrote: > On Thu, Oct 20, 2011 at 04:45:26PM +0200, Stefan Sperling wrote: > > On Thu, Oct 20, 2011 at 02:28:43PM +0200, Søren Thing Andersen wrote: > > > # But updating breaks on the changed link: > > > svn up wc3 > > > > > > The last command dies: > > > $ svn up wc3 > > > Updating 'wc3': > > > A wc3/dir-v2 > > > svn: E235000: In file 'subversion/libsvn_wc/update_editor.c' line > > > 1582: assertion failed (action == svn_wc_conflict_action_edit || > > > action == svn_wc_conflict_action_delete || action == > > > svn_wc_conflict_action_replace) > > > Abort trap: 6 (core dumped) > > > > > If you need more information, I would be glad to provide it. > > > > Thanks, I can reproduce this. Taking a look. > > I think I found the problem. > Can you apply this patch to the FreeBSD port, recompile and test? > Thanks.
Ooops, sorry, that patch had a bug. It fixed the assertion in your example but not in others. This one should be better. Index: subversion/libsvn_wc/update_editor.c =================================================================== --- subversion/libsvn_wc/update_editor.c (revision 1186847) +++ subversion/libsvn_wc/update_editor.c (working copy) @@ -4268,20 +4268,27 @@ close_file(void *file_baton, SVN_PROP_SPECIAL, APR_HASH_KEY_STRING) != NULL; - { - int i; + if (regular_prop_changes->nelts == 0) + { + /* No prop-change, so no change in symlink status. */ + incoming_is_link = local_is_link; + } + else + { + int i; - for (i = 0; i < regular_prop_changes->nelts; ++i) - { - const svn_prop_t *prop = &APR_ARRAY_IDX(regular_prop_changes, i, - svn_prop_t); + for (i = 0; i < regular_prop_changes->nelts; ++i) + { + const svn_prop_t *prop = &APR_ARRAY_IDX(regular_prop_changes, i, + svn_prop_t); - if (strcmp(prop->name, SVN_PROP_SPECIAL) == 0) - { - incoming_is_link = TRUE; - } - } - } + if (strcmp(prop->name, SVN_PROP_SPECIAL) == 0) + { + incoming_is_link = TRUE; + break; + } + } + } if (local_is_link != incoming_is_link)