Make the dump stream parser more resilient to malformed dump streams that do not contain \n characters at all.
Previously, we'd attempt to load the whole input into memory due to how svn_stream_readline() is currently implemented. Doing so could potentially choke for large files. The corresponding real-world case is where a user (accidentally) attempts to load a huge binary file that does not contain \n characters as the repository dump.
* subversion/libsvn_repos/load.c (parse_format_version): Read the dump version string directly from stream, with an upper limit of 80 bytes. Comment on why we don't use svn_stream_readline() for this particular case. (svn_repos_parse_dumpstream3): Update the call to parse_format_version().
Enable svn_repos_parse_dumpstream3() to work with incomplete parser callback function tables. Replace the functions given by the caller as NULL with a no-op dummy.
* subversion/include/svn_repos.h (svn_repos_parse_dumpstream3): Add comment that caller requirements are now relaxed.
* subversion/libsvn_repos/load.c (dummy_handler_magic_header_record, dummy_handler_uuid_record, dummy_handler_new_revision_record, dummy_handler_new_node_record, dummy_handler_set_revision_property, dummy_handler_set_node_property, dummy_handler_delete_node_property, dummy_handler_remove_node_props, dummy_handler_set_fulltext, dummy_handler_apply_textdelta, dummy_handler_close_node, dummy_handler_close_revision): Complete set of no-op dummy callbacks. (SET_VTABLE_ENTRY): A local macro to make the next function more readable and easier to maintain. (complete_vtable): New function to patch up incomplate function tables. (svn_repos_parse_dumpstream3): Patch up the function table before using it.
* subversion/tests/cmdline/svnadmin_tests.py (load_revprops): No longer expected to fail.