From 96832a2c82807876925126bc7a0e3b546a952c74 Mon Sep 17 00:00:00 2001
From: Mat M <mathew1800@gmail.com>
Date: Tue, 28 Apr 2020 15:39:02 -0400
Subject: [PATCH] core/memory: Make use of std::move in Entry::operator=
 (#5233)

* core/memory: Amend unusual return value of operator=

operator= usually returns a reference to this. Given there's no comment
explaining why void was used, this can be assumed to be an oversight.

* core/memory: Make use of std::move in Entry::operator=

Same behavior, minus the need for an atomic reference count increment
and decrement (since MemoryRef contains a std::shared_ptr).
---
 src/core/memory.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/core/memory.h b/src/core/memory.h
index 5e259a8ad..e8e714952 100644
--- a/src/core/memory.h
+++ b/src/core/memory.h
@@ -85,9 +85,10 @@ struct PageTable {
         struct Entry {
             Entry(Pointers& pointers_, VAddr idx_) : pointers(pointers_), idx(idx_) {}
 
-            void operator=(MemoryRef value) {
-                pointers.refs[idx] = value;
+            Entry& operator=(MemoryRef value) {
                 pointers.raw[idx] = value.GetPtr();
+                pointers.refs[idx] = std::move(value);
+                return *this;
             }
 
             operator u8*() {