@@ -234,41 +234,42 @@ cdef class Unpacker(object):
234234 (See also simplejson)
235235
236236 :param int max_buffer_size:
237- Limits size of data waiting unpacked. 0 means system's INT_MAX (default).
237+ Limits size of data waiting unpacked. 0 means system's INT_MAX.
238+ The default value is 100*1024*1024 (100MiB).
238239 Raises `BufferFull` exception when it is insufficient.
239240 You should set this parameter when unpacking data from untrusted source.
240241
241242 :param int max_str_len:
242243 Deprecated, use *max_buffer_size* instead.
243- Limits max length of str. (default: max_buffer_size or 1024*1024 )
244+ Limits max length of str. (default: max_buffer_size)
244245
245246 :param int max_bin_len:
246247 Deprecated, use *max_buffer_size* instead.
247- Limits max length of bin. (default: max_buffer_size or 1024*1024 )
248+ Limits max length of bin. (default: max_buffer_size)
248249
249250 :param int max_array_len:
250- Limits max length of array. (default: max_buffer_size or 128*1024 )
251+ Limits max length of array. (default: max_buffer_size)
251252
252253 :param int max_map_len:
253- Limits max length of map. (default: max_buffer_size//2 or 32*1024 )
254+ Limits max length of map. (default: max_buffer_size//2)
254255
255256 :param int max_ext_len:
256257 Deprecated, use *max_buffer_size* instead.
257- Limits max size of ext type. (default: max_buffer_size or 1024*1024 )
258+ Limits max size of ext type. (default: max_buffer_size)
258259
259260 :param str unicode_errors:
260261 Error handler used for decoding str type. (default: `'strict'`)
261262
262263
263264 Example of streaming deserialize from file-like object::
264265
265- unpacker = Unpacker(file_like, max_buffer_size=10*1024*1024 )
266+ unpacker = Unpacker(file_like)
266267 for o in unpacker:
267268 process(o)
268269
269270 Example of streaming deserialize from socket::
270271
271- unpacker = Unpacker(max_buffer_size=10*1024*1024 )
272+ unpacker = Unpacker()
272273 while True:
273274 buf = sock.recv(1024**2)
274275 if not buf:
@@ -305,7 +306,7 @@ cdef class Unpacker(object):
305306 def __init__ (self , file_like = None , *, Py_ssize_t read_size = 0 ,
306307 bint use_list = True , bint raw = False , bint strict_map_key = True ,
307308 object object_hook = None , object object_pairs_hook = None , object list_hook = None ,
308- unicode_errors = None , Py_ssize_t max_buffer_size = 0 ,
309+ unicode_errors = None , Py_ssize_t max_buffer_size = 100 * 1024 * 1024 ,
309310 object ext_hook = ExtType,
310311 Py_ssize_t max_str_len = - 1 ,
311312 Py_ssize_t max_bin_len = - 1 ,
@@ -325,23 +326,24 @@ cdef class Unpacker(object):
325326 if not PyCallable_Check(self .file_like_read):
326327 raise TypeError (" `file_like.read` must be a callable." )
327328
329+ if not max_buffer_size:
330+ max_buffer_size = INT_MAX
328331 if max_str_len == - 1 :
329- max_str_len = max_buffer_size or 1024 * 1024
332+ max_str_len = max_buffer_size
330333 if max_bin_len == - 1 :
331- max_bin_len = max_buffer_size or 1024 * 1024
334+ max_bin_len = max_buffer_size
332335 if max_array_len == - 1 :
333- max_array_len = max_buffer_size or 128 * 1024
336+ max_array_len = max_buffer_size
334337 if max_map_len == - 1 :
335- max_map_len = max_buffer_size// 2 or 32 * 1024
338+ max_map_len = max_buffer_size// 2
336339 if max_ext_len == - 1 :
337- max_ext_len = max_buffer_size or 1024 * 1024
340+ max_ext_len = max_buffer_size
338341
339- if not max_buffer_size:
340- max_buffer_size = INT_MAX
341342 if read_size > max_buffer_size:
342343 raise ValueError (" read_size should be less or equal to max_buffer_size" )
343344 if not read_size:
344345 read_size = min (max_buffer_size, 1024 ** 2 )
346+
345347 self .max_buffer_size = max_buffer_size
346348 self .read_size = read_size
347349 self .buf = < char * > PyMem_Malloc(read_size)
0 commit comments