Author: brane
Date: Sun May 18 11:38:05 2025
New Revision: 1925665
URL: http://svn.apache.org/viewvc?rev=1925665&view=rev
Log:
On the patch-from-stream branch: Synced from trunk r1925664.
Modified:
subversion/branches/patch-from-stream/ (props changed)
subversion/branches/patch-from-stream/subversion/include/svn_io.h
subversion/branches/patch-from-stream/subversion/libsvn_client/blame.c
subversion/branches/patch-from-stream/subversion/libsvn_subr/stream.c
subversion/branches/patch-from-stream/subversion/libsvn_subr/subst.c
Propchange: subversion/branches/patch-from-stream/
------------------------------------------------------------------------------
Merged /subversion/trunk:r1925658-1925664
Modified: subversion/branches/patch-from-stream/subversion/include/svn_io.h
URL:
http://svn.apache.org/viewvc/subversion/branches/patch-from-stream/subversion/include/svn_io.h?rev=1925665&r1=1925664&r2=1925665&view=diff
==============================================================================
--- subversion/branches/patch-from-stream/subversion/include/svn_io.h (original)
+++ subversion/branches/patch-from-stream/subversion/include/svn_io.h Sun May
18 11:38:05 2025
@@ -1385,6 +1385,14 @@ svn_stream_reset(svn_stream_t *stream);
svn_boolean_t
svn_stream_supports_mark(svn_stream_t *stream);
+/** Returns @c TRUE if the generic @a stream supports svn_stream_seek().
+ *
+ * @see svn_stream_seek()
+ * @since New in 1.15.
+ */
+svn_boolean_t
+svn_stream_supports_seek(svn_stream_t *stream);
+
/** Returns @c TRUE if the generic @a stream supports svn_stream_reset().
*
* @see svn_stream_reset()
Modified: subversion/branches/patch-from-stream/subversion/libsvn_client/blame.c
URL:
http://svn.apache.org/viewvc/subversion/branches/patch-from-stream/subversion/libsvn_client/blame.c?rev=1925665&r1=1925664&r2=1925665&view=diff
==============================================================================
--- subversion/branches/patch-from-stream/subversion/libsvn_client/blame.c
(original)
+++ subversion/branches/patch-from-stream/subversion/libsvn_client/blame.c Sun
May 18 11:38:05 2025
@@ -499,8 +499,7 @@ file_rev_handler(void *baton, const char
SVN_ERR(svn_stream_open_readonly(&delta_baton->source_stream,
frb->last_filename,
frb->currpool, pool));
else
- /* Means empty stream below. */
- delta_baton->source_stream = NULL;
+ delta_baton->source_stream = svn_stream_empty(pool);
last_stream = svn_stream_disown(delta_baton->source_stream, pool);
if (frb->include_merged_revisions && !merged_revision)
Modified: subversion/branches/patch-from-stream/subversion/libsvn_subr/stream.c
URL:
http://svn.apache.org/viewvc/subversion/branches/patch-from-stream/subversion/libsvn_subr/stream.c?rev=1925665&r1=1925664&r2=1925665&view=diff
==============================================================================
--- subversion/branches/patch-from-stream/subversion/libsvn_subr/stream.c
(original)
+++ subversion/branches/patch-from-stream/subversion/libsvn_subr/stream.c Sun
May 18 11:38:05 2025
@@ -236,11 +236,17 @@ svn_stream_supports_mark(svn_stream_t *s
}
svn_boolean_t
-svn_stream_supports_reset(svn_stream_t *stream)
+svn_stream_supports_seek(svn_stream_t *stream)
{
return stream->seek_fn != NULL;
}
+svn_boolean_t
+svn_stream_supports_reset(svn_stream_t *stream)
+{
+ return svn_stream_supports_seek(stream);
+}
+
svn_error_t *
svn_stream_mark(svn_stream_t *stream, svn_stream_mark_t **mark,
apr_pool_t *pool)
@@ -658,12 +664,16 @@ svn_stream_t *
svn_stream_disown(svn_stream_t *stream, apr_pool_t *pool)
{
svn_stream_t *s = svn_stream_create(stream, pool);
+ const svn_read_fn_t read_handler =
+ svn_stream_supports_partial_read(stream) ? read_handler_disown : NULL;
- svn_stream_set_read2(s, read_handler_disown, read_full_handler_disown);
+ svn_stream_set_read2(s, read_handler, read_full_handler_disown);
svn_stream_set_skip(s, skip_handler_disown);
svn_stream_set_write(s, write_handler_disown);
- svn_stream_set_mark(s, mark_handler_disown);
- svn_stream_set_seek(s, seek_handler_disown);
+ if (svn_stream_supports_mark(stream))
+ svn_stream_set_mark(s, mark_handler_disown);
+ if (svn_stream_supports_seek(stream))
+ svn_stream_set_seek(s, seek_handler_disown);
svn_stream_set_data_available(s, data_available_disown);
svn_stream_set_readline(s, readline_handler_disown);
@@ -1490,6 +1500,8 @@ svn_stream_checksummed2(svn_stream_t *st
{
svn_stream_t *s;
struct checksum_stream_baton *baton;
+ const svn_read_fn_t read_handler =
+ svn_stream_supports_partial_read(stream) ? read_handler_checksum : NULL;
if (read_checksum == NULL && write_checksum == NULL)
return stream;
@@ -1512,7 +1524,7 @@ svn_stream_checksummed2(svn_stream_t *st
baton->pool = pool;
s = svn_stream_create(baton, pool);
- svn_stream_set_read2(s, read_handler_checksum, read_full_handler_checksum);
+ svn_stream_set_read2(s, read_handler, read_full_handler_checksum);
svn_stream_set_write(s, write_handler_checksum);
svn_stream_set_data_available(s, data_available_handler_checksum);
svn_stream_set_close(s, close_handler_checksum);
Modified: subversion/branches/patch-from-stream/subversion/libsvn_subr/subst.c
URL:
http://svn.apache.org/viewvc/subversion/branches/patch-from-stream/subversion/libsvn_subr/subst.c?rev=1925665&r1=1925664&r2=1925665&view=diff
==============================================================================
--- subversion/branches/patch-from-stream/subversion/libsvn_subr/subst.c
(original)
+++ subversion/branches/patch-from-stream/subversion/libsvn_subr/subst.c Sun
May 18 11:38:05 2025
@@ -1542,10 +1542,9 @@ stream_translated(svn_stream_t *stream,
svn_stream_set_write(s, translated_stream_write);
svn_stream_set_close(s, translated_stream_close);
if (svn_stream_supports_mark(stream))
- {
- svn_stream_set_mark(s, translated_stream_mark);
- svn_stream_set_seek(s, translated_stream_seek);
- }
+ svn_stream_set_mark(s, translated_stream_mark);
+ if (svn_stream_supports_seek(stream))
+ svn_stream_set_seek(s, translated_stream_seek);
return s;
}