Skip to content

Commit c23568d

Browse files
committed
Fixed bug related to unprocessed data remaining in a yajl parser'
1 parent a15fe00 commit c23568d

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

yajl/yajl_parse.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,9 @@ def parse(self, f=sys.stdin, ctx=None):
203203
while 1:
204204
fileData = f.read(self.buf_siz-1)
205205
if not fileData:
206-
break
207-
stat = yajl.yajl_parse(hand, fileData, len(fileData))
206+
stat = yajl.yajl_parse_complete(hand)
207+
else:
208+
stat = yajl.yajl_parse(hand, fileData, len(fileData))
208209
if stat not in (yajl_status_ok.value,
209210
yajl_status_insufficient_data.value):
210211
if stat == yajl_status_client_canceled.value:
@@ -219,5 +220,7 @@ def parse(self, f=sys.stdin, ctx=None):
219220
error = yajl.yajl_get_error(
220221
hand, 1, fileData, len(fileData))
221222
raise YajlError(error)
223+
if not fileData:
224+
break
222225
finally:
223226
yajl.yajl_free(hand)

0 commit comments

Comments
 (0)