Index: subversion/svndumpfilter/main.c
===================================================================
--- subversion/svndumpfilter/main.c	(revision 27850)
+++ subversion/svndumpfilter/main.c	(working copy)
@@ -649,6 +649,7 @@
                  struct revision_baton_t *rb, apr_pool_t *pool)
 {
   apr_hash_t *mergeinfo;
+  apr_hash_t *modified_mergeinfo = apr_hash_make(pool);
   apr_hash_index_t *hi;
   apr_pool_t *subpool = svn_pool_create(pool);
 
@@ -702,27 +703,16 @@
                   (SVN_ERR_NODE_UNEXPECTED_KIND, NULL,
                    _("No valid revision range 'end' in filtered stream"));
 
-              if (range->start != revmap_start->rev
-                  || range->end != revmap_end->rev)
-                /* Revisions will be renumbered -- initial_val is dirty. */
-                initial_val = NULL;
-
               range->start = revmap_start->rev;
               range->end = revmap_end->rev;
             }
-          /* ### Compact the rangelist? */
+          apr_hash_set(modified_mergeinfo, merge_source,
+                       APR_HASH_KEY_STRING, rangelist);
         }
     }
 
-  if (initial_val)
-    {
-      *final_val = (svn_string_t *) initial_val;
-    }
-  else
-    {
-      SVN_ERR(svn_mergeinfo_sort(mergeinfo, subpool));
-      SVN_ERR(svn_mergeinfo__to_string(final_val, mergeinfo, pool));
-    }
+  SVN_ERR(svn_mergeinfo_sort(modified_mergeinfo, subpool));
+  SVN_ERR(svn_mergeinfo__to_string(final_val, modified_mergeinfo, pool));
   svn_pool_destroy(subpool);
 
   return SVN_NO_ERROR;


