@@ -109,38 +109,26 @@ def default_read_extended_type(typecode, data):
109
109
cdef inline int get_data_from_buffer(object obj,
110
110
Py_buffer * view,
111
111
char ** buf,
112
- Py_ssize_t * buffer_len,
113
- int * new_protocol) except 0 :
112
+ Py_ssize_t * buffer_len) except 0 :
114
113
cdef object contiguous
115
114
cdef Py_buffer tmp
116
- if PyObject_CheckBuffer(obj):
117
- new_protocol[0 ] = 1
118
- if PyObject_GetBuffer(obj, view, PyBUF_FULL_RO) == - 1 :
119
- raise
120
- if view.itemsize != 1 :
121
- PyBuffer_Release(view)
122
- raise BufferError(" cannot unpack from multi-byte object" )
123
- if PyBuffer_IsContiguous(view, b' A' ) == 0 :
124
- PyBuffer_Release(view)
125
- # create a contiguous copy and get buffer
126
- contiguous = PyMemoryView_GetContiguous(obj, PyBUF_READ, b' C' )
127
- PyObject_GetBuffer(contiguous, view, PyBUF_SIMPLE)
128
- # view must hold the only reference to contiguous,
129
- # so memory is freed when view is released
130
- Py_DECREF(contiguous)
131
- buffer_len[0 ] = view.len
132
- buf[0 ] = < char * > view.buf
133
- return 1
134
- else :
135
- new_protocol[0 ] = 0
136
- if PyObject_AsReadBuffer(obj, < const void ** > buf, buffer_len) == - 1 :
137
- raise BufferError(" could not get memoryview" )
138
- PyErr_WarnEx(RuntimeWarning ,
139
- " using old buffer interface to unpack %s ; "
140
- " this leads to unpacking errors if slicing is used and "
141
- " will be removed in a future version" % type (obj),
142
- 1 )
143
- return 1
115
+ if PyObject_GetBuffer(obj, view, PyBUF_FULL_RO) == - 1 :
116
+ raise
117
+ if view.itemsize != 1 :
118
+ PyBuffer_Release(view)
119
+ raise BufferError(" cannot unpack from multi-byte object" )
120
+ if PyBuffer_IsContiguous(view, b' A' ) == 0 :
121
+ PyBuffer_Release(view)
122
+ # create a contiguous copy and get buffer
123
+ contiguous = PyMemoryView_GetContiguous(obj, PyBUF_READ, b' C' )
124
+ PyObject_GetBuffer(contiguous, view, PyBUF_SIMPLE)
125
+ # view must hold the only reference to contiguous,
126
+ # so memory is freed when view is released
127
+ Py_DECREF(contiguous)
128
+ buffer_len[0 ] = view.len
129
+ buf[0 ] = < char * > view.buf
130
+ return 1
131
+
144
132
145
133
def unpackb (object packed , *, object object_hook = None , object list_hook = None ,
146
134
bint use_list = True , bint raw = True , bint strict_map_key = False ,
@@ -172,12 +160,11 @@ def unpackb(object packed, *, object object_hook=None, object list_hook=None,
172
160
cdef char * buf = NULL
173
161
cdef Py_ssize_t buf_len
174
162
cdef const char * cerr = NULL
175
- cdef int new_protocol = 0
176
163
177
164
if unicode_errors is not None :
178
165
cerr = unicode_errors
179
166
180
- get_data_from_buffer(packed, & view, & buf, & buf_len, & new_protocol )
167
+ get_data_from_buffer(packed, & view, & buf, & buf_len)
181
168
182
169
if max_str_len == - 1 :
183
170
max_str_len = buf_len
@@ -196,8 +183,7 @@ def unpackb(object packed, *, object object_hook=None, object list_hook=None,
196
183
max_str_len, max_bin_len, max_array_len, max_map_len, max_ext_len)
197
184
ret = unpack_construct(& ctx, buf, buf_len, & off)
198
185
finally :
199
- if new_protocol:
200
- PyBuffer_Release(& view);
186
+ PyBuffer_Release(& view);
201
187
202
188
if ret == 1 :
203
189
obj = unpack_data(& ctx)
@@ -392,20 +378,18 @@ cdef class Unpacker(object):
392
378
def feed (self , object next_bytes ):
393
379
""" Append `next_bytes` to internal buffer."""
394
380
cdef Py_buffer pybuff
395
- cdef int new_protocol = 0
396
381
cdef char * buf
397
382
cdef Py_ssize_t buf_len
398
383
399
384
if self .file_like is not None :
400
385
raise AssertionError (
401
386
" unpacker.feed() is not be able to use with `file_like`." )
402
387
403
- get_data_from_buffer(next_bytes, & pybuff, & buf, & buf_len, & new_protocol )
388
+ get_data_from_buffer(next_bytes, & pybuff, & buf,
6804
& buf_len)
404
389
try :
405
390
self .append_buffer(buf, buf_len)
406
391
finally :
407
- if new_protocol:
408
- PyBuffer_Release(& pybuff)
392
+ PyBuffer_Release(& pybuff)
409
393
410
394
cdef append_buffer(self , void * _buf, Py_ssize_t _buf_len):
411
395
cdef:
0 commit comments