vlc | branch: master | Pierre Ynard <linkfa...@yahoo.fr> | Tue Oct 27 09:01:25 
2020 +0100| [aa4996021d00ee7fc5ce1516316511ee96005966] | committer: Pierre Ynard

stream_ReadLine: probe data exponentially instead of linearly

This reduces the number of buffer reallocations performed for long
lines, turning the function's complexity from quadratic to linear. The
line length limit remains unchanged.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=aa4996021d00ee7fc5ce1516316511ee96005966
---

 src/input/stream.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/input/stream.c b/src/input/stream.c
index 45a724afab..77c8cf0e4c 100644
--- a/src/input/stream.c
+++ b/src/input/stream.c
@@ -245,9 +245,11 @@ char *vlc_stream_ReadLine( stream_t *s )
 
     for( ;; )
     {
+        size_t i_peek = i_line == 0 ? STREAM_PROBE_LINE
+                                    : __MIN( i_line * 2, STREAM_LINE_MAX );
+
         /* Probe more data */
-        ssize_t i_data = vlc_stream_Peek( s, &p_data,
-                                          i_line + STREAM_PROBE_LINE );
+        ssize_t i_data = vlc_stream_Peek( s, &p_data, i_peek );
         if( i_data <= 0 )
             return NULL;
 

_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to