@@ -264,7 +264,7 @@ PyDoc_STRVAR(popleft_doc, "Remove and return the leftmost element.");
264
264
265
265
#define NEEDS_TRIM (deque , maxlen ) ((size_t)(maxlen) < (size_t)(Py_SIZE(deque)))
266
266
267
- static int
267
+ static inline int
268
268
deque_append_internal (dequeobject * deque , PyObject * item , Py_ssize_t maxlen )
269
269
{
270
270
if (deque -> rightindex == BLOCKLEN - 1 ) {
@@ -301,7 +301,7 @@ deque_append(dequeobject *deque, PyObject *item)
301
301
302
302
PyDoc_STRVAR (append_doc , "Add an element to the right side of the deque." );
303
303
304
- static int
304
+ static inline int
305
305
deque_appendleft_internal (dequeobject * deque , PyObject * item , Py_ssize_t maxlen )
306
306
{
307
307
if (deque -> leftindex == 0 ) {
@@ -403,28 +403,10 @@ deque_extend(dequeobject *deque, PyObject *iterable)
403
403
404
404
iternext = * Py_TYPE (it )-> tp_iternext ;
405
405
while ((item = iternext (it )) != NULL ) {
406
- if (deque -> rightindex == BLOCKLEN - 1 ) {
407
- block * b = newblock ();
408
- if (b == NULL ) {
409
- Py_DECREF (item );
410
- Py_DECREF (it );
411
- return NULL ;
412
- }
413
- b -> leftlink = deque -> rightblock ;
414
- CHECK_END (deque -> rightblock -> rightlink );
415
- deque -> rightblock -> rightlink = b ;
416
- deque -> rightblock = b ;
417
- MARK_END (b -> rightlink );
418
- deque -> rightindex = -1 ;
419
- }
420
- Py_SIZE (deque )++ ;
421
- deque -> rightindex ++ ;
422
- deque -> rightblock -> data [deque -> rightindex ] = item ;
423
- if (NEEDS_TRIM (deque , maxlen )) {
424
- PyObject * olditem = deque_popleft (deque , NULL );
425
- Py_DECREF (olditem );
426
- } else {
427
- deque -> state ++ ;
406
+ if (deque_append_internal (deque , item , maxlen ) == -1 ) {
407
+ Py_DECREF (item );
408
+ Py_DECREF (it );
409
+ return NULL ;
428
410
}
429
411
}
430
412
return finalize_iterator (it );
@@ -468,28 +450,10 @@ deque_extendleft(dequeobject *deque, PyObject *iterable)
468
450
469
451
iternext = * Py_TYPE (it )-> tp_iternext ;
470
452
while ((item = iternext (it )) != NULL ) {
471
- if (deque -> leftindex == 0 ) {
472
- block * b = newblock ();
473
- if (b == NULL ) {
474
- Py_DECREF (item );
475
- Py_DECREF (it );
476
- return NULL ;
477
- }
478
- b -> rightlink = deque -> leftblock ;
479
- CHECK_END (deque -> leftblock -> leftlink );
480
- deque -> leftblock -> leftlink = b ;
481
- deque -> leftblock = b ;
482
- MARK_END (b -> leftlink );
483
- deque -> leftindex = BLOCKLEN ;
484
- }
485
- Py_SIZE (deque )++ ;
486
- deque -> leftindex -- ;
487
- deque -> leftblock -> data [deque -> leftindex ] = item ;
488
- if (NEEDS_TRIM (deque , maxlen )) {
489
- PyObject * olditem = deque_pop (deque , NULL );
490
- Py_DECREF (olditem );
491
- } else {
492
- deque -> state ++ ;
453
+ if (deque_appendleft_internal (deque , item , maxlen ) == -1 ) {
454
+ Py_DECREF (item );
455
+ Py_DECREF (it );
456
+ return NULL ;
493
457
}
494
458
}
495
459
return finalize_iterator (it );
0 commit comments