summaryrefslogtreecommitdiffstats
path: root/Lib/json/scanner.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/json/scanner.py')
-rw-r--r--Lib/json/scanner.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/Lib/json/scanner.py b/Lib/json/scanner.py
index 74e6805..23eef61 100644
--- a/Lib/json/scanner.py
+++ b/Lib/json/scanner.py
@@ -17,13 +17,13 @@ def py_make_scanner(context):
parse_array = context.parse_array
parse_string = context.parse_string
match_number = NUMBER_RE.match
- encoding = context.encoding
strict = context.strict
parse_float = context.parse_float
parse_int = context.parse_int
parse_constant = context.parse_constant
object_hook = context.object_hook
object_pairs_hook = context.object_pairs_hook
+ memo = context.memo
def _scan_once(string, idx):
try:
@@ -32,10 +32,10 @@ def py_make_scanner(context):
raise StopIteration
if nextchar == '"':
- return parse_string(string, idx + 1, encoding, strict)
+ return parse_string(string, idx + 1, strict)
elif nextchar == '{':
- return parse_object((string, idx + 1), encoding, strict,
- _scan_once, object_hook, object_pairs_hook)
+ return parse_object((string, idx + 1), strict,
+ _scan_once, object_hook, object_pairs_hook, memo)
elif nextchar == '[':
return parse_array((string, idx + 1), _scan_once)
elif nextchar == 'n' and string[idx:idx + 4] == 'null':
@@ -62,6 +62,12 @@ def py_make_scanner(context):
else:
raise StopIteration
+ def scan_once(string, idx):
+ try:
+ return _scan_once(string, idx)
+ finally:
+ memo.clear()
+
return _scan_once
make_scanner = c_make_scanner or py_make_scanner