Skip to content

Commit 90061f8

Browse files
Fix 0 length bencoded strings
1 parent d3398f1 commit 90061f8

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

nrepl/bencode.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def _read_int(s, terminator=None, init_data=None):
4646

4747

4848
def _read_bytes(s, n):
49-
data = StringIO()
49+
data = StringIO('')
5050
cnt = 0
5151
while cnt < n:
5252
m = s.read(n - cnt)
@@ -95,7 +95,7 @@ def _read_map(s):
9595

9696
def _read_datum(s):
9797
delim = _read_delimiter(s)
98-
if delim:
98+
if delim is not '':
9999
return _read_fns.get(delim, lambda s: _read_bytes(s, delim))(s)
100100

101101

@@ -135,7 +135,7 @@ def encode(v):
135135
def decode_file(file):
136136
while True:
137137
x = _read_datum(file)
138-
if not x:
138+
if x is None:
139139
break
140140
yield x
141141

test.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ def test_encoding (self):
2323
self.assertEqual([{u'a': 1, u'c': [{u'x': [u'y']}], u'b': [2, [3]]}],
2424
list(decode('d1:ai1e1:cld1:xl1:yeee1:bli2eli3eeee')))
2525

26+
def test_empty_string (self):
27+
self.assertEqual(['a'], list(decode('1:a')))
28+
self.assertEqual([''], list(decode('0:')))
29+
self.assertEqual([['spam', '', 'a', 'ab']], list(decode('l4:spam0:1:a2:abe')))
30+
self.assertEqual([{'spam': ''}], list(decode('d4:spam0:e')))
31+
2632
class REPLTest (unittest.TestCase):
2733
def setUp (self):
2834
# this here only to accommodate travis, which puts leiningen @ lein2

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy