File tree Expand file tree Collapse file tree 1 file changed +19
-15
lines changed Expand file tree Collapse file tree 1 file changed +19
-15
lines changed Original file line number Diff line number Diff line change @@ -67,24 +67,28 @@ def read_int(self):
6767 def read (self , n ):
6868 if n == 0 or self ._current_pane == - 1 :
6969 return _empty_view
70- p , q = self ._panes [self ._current_pane ]
71- size = q - p
72- remaining = size - self ._current_offset
73- if n <= remaining :
70+ value = None
71+ while n > 0 and self ._current_pane >= 0 :
72+ p , q = self ._panes [self ._current_pane ]
73+ size = q - p
74+ remaining = size - self ._current_offset
7475 start = p + self ._current_offset
75- end = start + n
76- if n < remaining :
77- self ._current_offset += n
76+ if n <= remaining :
77+ end = start + n
78+ if n < remaining :
79+ self ._current_offset += n
80+ else :
81+ self ._next_pane ()
7882 else :
83+ end = q
7984 self ._next_pane ()
80- return memoryview (self ._view [start :end ])
81- start = p + self ._current_offset
82- end = q
83- value = bytearray (self ._view [start :end ])
84- self ._next_pane ()
85- if len (value ) < n and self ._current_pane >= 0 :
86- value .extend (self .read (n - (end - start )))
87- return value
85+ if value :
86+ value .extend (self ._view [start :end ])
87+ else :
88+ value = bytearray (self ._view [start :end ])
89+ n -= end - start
90+ continue
91+ return memoryview (value )
8892
8993 def close (self ):
9094 self ._view = None
You can’t perform that action at this time.
0 commit comments