svn commit: r1925665 - in /subversion/branches/patch-from-stream: ./ subversion/include/svn_io.h subversion/libsvn_client/blame.c subversion/libsvn_subr/stream.c subversion/libsvn_subr/subst.c

[email protected]
Newsgroups gmane.comp.version-control.subversion.svn
Message-ID <[email protected]>
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;
     }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.