DON'T TOUCH maybe_derive_ancestry();  it works perfectly.  The trick  is to *guarantee* that there's always a "root" frame on the parser  stack which represents the nameless root directory.  This frame  *always* has the `base' src-path and src-version, so that  maybe_derive_ancestry can correctly fall back on it.  It works now!
DON'T TOUCH maybe_derive_ancestry();  it works perfectly.  The trick
 is to *guarantee* that there's always a "root" frame on the parser
 stack which represents the nameless root directory.  This frame
 *always* has the `base' src-path and src-version, so that
 maybe_derive_ancestry can correctly fall back on it.  It works now!

 * xml_parse.c

   (maybe_derive_ancestry): revert change -- leave it alone.

   (svn_make_xml_parser): call replace_root to fetch root_baton, and
   start our digger out with a `root' stackframe containing both
   root_baton and our `base' ancestry.

   (do_stack_append):  check for "root" frame by testing (previous == NULL)

   (do_stack_check_remove):
                       check for "root" frame by testing (previous == NULL)


   (xml_handle_end): if root frame is last remaining frame, call
   close_directory on the root_baton.

jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion