Simplify reporting of API violations of the conflict resolver callback. * subversion/libsvn_wc/merge.c (svn_wc__merge_internal): Replace error-checking code and custom error messages by SVN_ERR_ASSERT statements. (3 instances.) * subversion/libsvn_wc/props.c (maybe_generate_propconflict): Same. (2 instances.) Also don't bother setting an output parameter when we're returning an error, as callers should never look at it. Index: subversion/libsvn_wc/merge.c =================================================================== --- subversion/libsvn_wc/merge.c (revision 32020) +++ subversion/libsvn_wc/merge.c (working copy) @@ -416,10 +416,7 @@ svn_wc__merge_internal(svn_stringbuf_t * cdesc.property_name = NULL; SVN_ERR(conflict_func(&result, &cdesc, conflict_baton, pool)); - if (result == NULL) - return svn_error_create(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, - NULL, _("Conflict callback violated API:" - " returned no results")); + SVN_ERR_ASSERT(result); if (result->save_merged) { @@ -732,10 +729,7 @@ svn_wc__merge_internal(svn_stringbuf_t * cdesc.property_name = NULL; SVN_ERR(conflict_func(&result, &cdesc, conflict_baton, pool)); - if (result == NULL) - return svn_error_create(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, - NULL, _("Conflict callback violated API:" - " returned no results")); + SVN_ERR_ASSERT(result); switch (result->choice) { @@ -775,26 +769,16 @@ svn_wc__merge_internal(svn_stringbuf_t * } case svn_wc_conflict_choose_merged: { - if (! result->merged_file) - { - /* Callback asked us to choose its own - merged file, but didn't provide one! */ - return svn_error_create - (SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, - NULL, _("Conflict callback violated API:" - " returned no merged file")); - } - else - { - SVN_ERR(svn_wc__loggy_copy - (log_accum, NULL, adm_access, - svn_wc__copy_translate, - result->merged_file, merge_target, - FALSE, pool)); - *merge_outcome = svn_wc_merge_merged; - contains_conflicts = FALSE; - goto merge_complete; - } + SVN_ERR_ASSERT(result->merged_file); + + SVN_ERR(svn_wc__loggy_copy + (log_accum, NULL, adm_access, + svn_wc__copy_translate, + result->merged_file, merge_target, + FALSE, pool)); + *merge_outcome = svn_wc_merge_merged; + contains_conflicts = FALSE; + goto merge_complete; } case svn_wc_conflict_choose_postpone: default: Index: subversion/libsvn_wc/props.c =================================================================== --- subversion/libsvn_wc/props.c (revision 32020) +++ subversion/libsvn_wc/props.c (working copy) @@ -20,7 +20,6 @@ #include #include -#include #include #include #include @@ -1387,13 +1386,7 @@ maybe_generate_propconflict(svn_boolean_ /* Invoke the interactive conflict callback. */ SVN_ERR(conflict_func(&result, cdesc, conflict_baton, pool)); - if (result == NULL) - { - *conflict_remains = TRUE; - return svn_error_create(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, - NULL, _("Conflict callback violated API:" - " returned no results.")); - } + SVN_ERR_ASSERT(result); switch (result->choice) { @@ -1428,26 +1421,19 @@ maybe_generate_propconflict(svn_boolean_ } case svn_wc_conflict_choose_merged: { - if (!cdesc->merged_file && !result->merged_file) - return svn_error_create - (SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, - NULL, _("Conflict callback violated API:" - " returned no merged file.")); - else - { - svn_stringbuf_t *merged_stringbuf; - svn_string_t *merged_string; + svn_stringbuf_t *merged_stringbuf; + svn_string_t *merged_string; - SVN_ERR(svn_stringbuf_from_file2(&merged_stringbuf, - result->merged_file ? - result->merged_file : - cdesc->merged_file, - pool)); - merged_string = svn_string_create_from_buf(merged_stringbuf, pool); - apr_hash_set(working_props, propname, - APR_HASH_KEY_STRING, merged_string); - *conflict_remains = FALSE; - } + SVN_ERR_ASSERT(cdesc->merged_file || result->merged_file); + SVN_ERR(svn_stringbuf_from_file2(&merged_stringbuf, + result->merged_file ? + result->merged_file : + cdesc->merged_file, + pool)); + merged_string = svn_string_create_from_buf(merged_stringbuf, pool); + apr_hash_set(working_props, propname, + APR_HASH_KEY_STRING, merged_string); + *conflict_remains = FALSE; break; } }