Skip to content

Commit e16ed7f

Browse files
ThePuzzlemakerGankra
authored andcommitted
Fix Arc Clone
1 parent 57fd6cf commit e16ed7f

File tree

2 files changed

+5
-7
lines changed

2 files changed

+5
-7
lines changed

src/arc-clone.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ machines) incrementing the reference count at once. This is what we'll do.
5555

5656
It's pretty simple to implement this behaviour:
5757
```rust,ignore
58-
if old_rc >= isize::MAX {
58+
if old_rc >= isize::MAX as usize {
5959
std::process::abort();
6060
}
6161
```
@@ -77,9 +77,9 @@ impl<T> Clone for Arc<T> {
7777
let inner = unsafe { self.ptr.as_ref() };
7878
// Using a relaxed ordering is alright here as knowledge of the original
7979
// reference prevents other threads from wrongly deleting the object.
80-
inner.rc.fetch_add(1, Ordering::Relaxed);
80+
let old_rc = inner.rc.fetch_add(1, Ordering::Relaxed);
8181
82-
if old_rc >= isize::MAX {
82+
if old_rc >= isize::MAX as usize {
8383
std::process::abort();
8484
}
8585

src/arc-final.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,14 @@ impl<T> Deref for Arc<T> {
4646
}
4747
}
4848

49-
use std::sync::atomic::Ordering;
50-
5149
impl<T> Clone for Arc<T> {
5250
fn clone(&self) -> Arc<T> {
5351
let inner = unsafe { self.ptr.as_ref() };
5452
// Using a relaxed ordering is alright here as knowledge of the original
5553
// reference prevents other threads from wrongly deleting the object.
56-
inner.rc.fetch_add(1, Ordering::Relaxed);
54+
let old_rc = inner.rc.fetch_add(1, Ordering::Relaxed);
5755

58-
if old_rc >= isize::MAX {
56+
if old_rc >= isize::MAX as usize {
5957
std::process::abort();
6058
}
6159

0 commit comments

Comments
 (0)