Skip to content

Commit fce9ce7

Browse files
committed
Fix PyByteArray locking issue
1 parent f2098eb commit fce9ce7

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

vm/src/obj/objbytearray.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -486,13 +486,11 @@ impl PyByteArray {
486486

487487
#[pymethod(name = "extend")]
488488
fn extend(&self, iterable_of_ints: PyIterable, vm: &VirtualMachine) -> PyResult<()> {
489-
let mut inner = self.borrow_value_mut();
490-
491489
for x in iterable_of_ints.iter(vm)? {
492490
let x = x?;
493491
let x = PyIntRef::try_from_object(vm, x)?;
494492
let x = x.as_bigint().byte_or(vm)?;
495-
inner.elements.push(x);
493+
self.borrow_value_mut().elements.push(x);
496494
}
497495

498496
Ok(())
@@ -526,8 +524,8 @@ impl PyByteArray {
526524

527525
#[pymethod(name = "pop")]
528526
fn pop(&self, vm: &VirtualMachine) -> PyResult<u8> {
529-
let bytes = &mut self.borrow_value_mut().elements;
530-
bytes
527+
self.borrow_value_mut()
528+
.elements
531529
.pop()
532530
.ok_or_else(|| vm.new_index_error("pop from empty bytearray".to_owned()))
533531
}
@@ -623,9 +621,8 @@ impl PyValue for PyByteArrayIterator {
623621
impl PyByteArrayIterator {
624622
#[pymethod(name = "__next__")]
625623
fn next(&self, vm: &VirtualMachine) -> PyResult<u8> {
626-
let bytearr = self.bytearray.borrow_value();
627624
let pos = self.position.fetch_add(1);
628-
if let Some(&ret) = bytearr.elements.get(pos) {
625+
if let Some(&ret) = self.bytearray.borrow_value().elements.get(pos) {
629626
Ok(ret)
630627
} else {
631628
Err(objiter::new_stop_iteration(vm))

0 commit comments

Comments
 (0)