Skip to content

Commit df60a5f

Browse files
author
A. Jesse Jiryu Davis
committed
Off-by-one in GridOut.readline().
1 parent 3649a3a commit df60a5f

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

gridfs/grid_file.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ def readline(self, size=-1):
511511
for pos in xrange(len(chunk_data)):
512512
byte = chunk_data[pos]
513513
if byte == EMPTY or byte == NEWLN:
514-
size = received + pos
514+
size = received + pos + 1
515515
break
516516

517517
received += len(chunk_data)

test/test_grid_file.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,7 @@ def test_readline(self):
396396
Bye"""))
397397
f.close()
398398

399+
# Try read(), then readline().
399400
g = GridOut(self.db.fs, f._id)
400401
self.assertEqual(b("H"), g.read(1))
401402
self.assertEqual(b("ello world,\n"), g.readline())
@@ -406,6 +407,19 @@ def test_readline(self):
406407
self.assertEqual(b("Bye"), g.readline())
407408
self.assertEqual(b(""), g.readline())
408409

410+
# Try readline() first, then read().
411+
g = GridOut(self.db.fs, f._id)
412+
self.assertEqual(b("He"), g.readline(2))
413+
self.assertEqual(b("l"), g.read(1))
414+
self.assertEqual(b("lo"), g.readline(2))
415+
self.assertEqual(b(" world,\n"), g.readline())
416+
417+
# Only readline().
418+
g = GridOut(self.db.fs, f._id)
419+
self.assertEqual(b("H"), g.readline(1))
420+
self.assertEqual(b("e"), g.readline(1))
421+
self.assertEqual(b("llo world,\n"), g.readline())
422+
409423
def test_iterator(self):
410424
f = GridIn(self.db.fs)
411425
f.close()

0 commit comments

Comments
 (0)