[keel] Fix UUID to path lookups to fail properly

This commit is contained in:
Gary Talent 2023-12-03 22:02:00 -06:00
parent 348193ae9e
commit 3f83a254d2
2 changed files with 9 additions and 12 deletions

View File

@ -37,10 +37,6 @@ void unloadRom(char *rom) noexcept {
ox::safeDelete(rom);
}
ox::Result<void*> findPreloadSection() noexcept {
return OxError(1, "findPreloadSection is unsupported on this platform");
}
static void clearUuidMap(Context &ctx) noexcept {
ctx.uuidToPath.clear();
ctx.pathToUuid.clear();
@ -48,7 +44,7 @@ static void clearUuidMap(Context &ctx) noexcept {
void createUuidMapping(Context &ctx, ox::StringView filePath, ox::UUID const&uuid) noexcept {
ctx.pathToUuid[filePath] = uuid;
ctx.uuidToPath[uuid.toString()] = std::move(filePath);
ctx.uuidToPath[uuid.toString()] = filePath;
}
static ox::Error buildUuidMap(Context &ctx, ox::CRStringView path) noexcept {
@ -80,7 +76,8 @@ ox::Error buildUuidMap(Context &ctx) noexcept {
ox::Result<ox::UUID> pathToUuid(Context &ctx, ox::CRStringView path) noexcept {
#ifndef OX_BARE_METAL
return ctx.pathToUuid[path];
oxRequire(out, ctx.pathToUuid.at(path));
return *out;
#else
return OxError(1, "UUID to path conversion not supported on this platform");
#endif
@ -88,7 +85,8 @@ ox::Result<ox::UUID> pathToUuid(Context &ctx, ox::CRStringView path) noexcept {
ox::Result<ox::String> uuidToPath(Context &ctx, ox::CRStringView uuid) noexcept {
#ifndef OX_BARE_METAL
return ctx.uuidToPath[uuid];
oxRequire(out, ctx.uuidToPath.at(uuid));
return *out;
#else
return OxError(1, "UUID to path conversion not supported on this platform");
#endif
@ -96,7 +94,8 @@ ox::Result<ox::String> uuidToPath(Context &ctx, ox::CRStringView uuid) noexcept
ox::Result<ox::String> uuidToPath(Context &ctx, ox::UUID const&uuid) noexcept {
#ifndef OX_BARE_METAL
return ctx.uuidToPath[uuid.toString()];
oxRequire(out, ctx.uuidToPath.at(uuid.toString()));
return *out;
#else
return OxError(1, "UUID to path conversion not supported on this platform");
#endif

View File

@ -50,14 +50,12 @@ ox::Result<keel::AssetRef<T>> readObjFile(
return std::move(obj);
};
ox::StringView path;
ox::UUIDStr uuidStr;
if (beginsWith(assetId, "uuid://")) {
assetId = substr(assetId, 7);
path = ctx.uuidToPath[assetId];
oxRequire(p, ctx.uuidToPath.at(assetId));
path = *p;
} else {
path = assetId;
uuidStr = ctx.pathToUuid[path].toString();
assetId = uuidStr;
}
if (forceLoad) {
oxRequire(buff, ctx.rom->read(path));