From 3ff0697e4670dca8049c34d95a0f0fe7e6315679 Mon Sep 17 00:00:00 2001 From: Kelvin Sherlock Date: Sat, 7 Feb 2015 12:30:39 -0500 Subject: [PATCH] clean up some other RM code --- toolbox/rm.cpp | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/toolbox/rm.cpp b/toolbox/rm.cpp index 72722b5..b5f1f49 100644 --- a/toolbox/rm.cpp +++ b/toolbox/rm.cpp @@ -890,24 +890,19 @@ namespace RM Handle nativeHandle = NULL; - if (theData) - { - uint32_t handleSize; - MM::Native::GetHandleSize(theData, handleSize); - if (handleSize) - { + auto info = MM::GetHandleInfo(theData); + if (info.error()) return SetResError(MacOS::addResFailed); - nativeHandle = ::NewHandle(handleSize); - if (!nativeHandle) return SetResError(MacOS::addResFailed); - uint32_t src = memoryReadLong(theData); + nativeHandle = ::NewHandle(info->size); + if (!nativeHandle) return SetResError(MacOS::addResFailed); - std::memcpy(*(uint8_t **)nativeHandle, memoryPointer(src), handleSize); - rhandle_map.insert({theData, nativeHandle}); - } - } + std::memcpy(*(uint8_t **)nativeHandle, memoryPointer(info->address), info->size); + + rhandle_map.insert({theData, nativeHandle}); + // AddResource assumes ownership of the handle. ::AddResource(nativeHandle, theType, theID, memoryPointer(namePtr)); return SetResError(::ResError()); @@ -1147,10 +1142,9 @@ namespace RM // if it has a size, it's loaded... - uint32_t handleSize; - err = MM::Native::GetHandleSize(theResource, handleSize); - if (err) return SetResError(err); - if (handleSize) return SetResError(0); + auto info = MM::GetHandleInfo(theResource); + if (info.error()) return SetResError(resNotFound); + if (info->size) return SetResError(0); // otherwise, load it @@ -1162,7 +1156,7 @@ namespace RM ::LoadResource(nativeHandle); err = ::ResError(); - if (err) return SetResError(err); // ?!?! + if (err) return SetResError(err); size = ::GetHandleSize(nativeHandle); @@ -1174,8 +1168,9 @@ namespace RM if (size) { - uint32_t ptr = memoryReadLong(theResource); - std::memcpy(memoryPointer(ptr), *(void **)nativeHandle, size); + info = MM::GetHandleInfo(theResource); + + std::memcpy(memoryPointer(info->address), *(void **)nativeHandle, size); } return SetResError(0);