diff options
author | aap <aap@papnet.eu> | 2021-01-08 13:51:50 +0100 |
---|---|---|
committer | aap <aap@papnet.eu> | 2021-01-08 13:51:50 +0100 |
commit | 223b49e3be40afa963a31e43f348d2e859c2e543 (patch) | |
tree | 73eeb0739a2a7b3c0401f5032cf055432e6fe8a2 /src | |
parent | unused var (diff) | |
download | re3-223b49e3be40afa963a31e43f348d2e859c2e543.tar re3-223b49e3be40afa963a31e43f348d2e859c2e543.tar.gz re3-223b49e3be40afa963a31e43f348d2e859c2e543.tar.bz2 re3-223b49e3be40afa963a31e43f348d2e859c2e543.tar.lz re3-223b49e3be40afa963a31e43f348d2e859c2e543.tar.xz re3-223b49e3be40afa963a31e43f348d2e859c2e543.tar.zst re3-223b49e3be40afa963a31e43f348d2e859c2e543.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/core/FileMgr.cpp | 3 | ||||
-rw-r--r-- | src/core/FileMgr.h | 2 | ||||
-rw-r--r-- | src/core/Streaming.cpp | 8 |
3 files changed, 11 insertions, 2 deletions
diff --git a/src/core/FileMgr.cpp b/src/core/FileMgr.cpp index 99923ddf..32aa4041 100644 --- a/src/core/FileMgr.cpp +++ b/src/core/FileMgr.cpp @@ -241,7 +241,7 @@ CFileMgr::SetDirMyDocuments(void) } ssize_t -CFileMgr::LoadFile(const char *file, uint8 *buf, int unused, const char *mode) +CFileMgr::LoadFile(const char *file, uint8 *buf, int maxlen, const char *mode) { int fd; ssize_t n, len; @@ -257,6 +257,7 @@ CFileMgr::LoadFile(const char *file, uint8 *buf, int unused, const char *mode) return -1; #endif len += n; + assert(len < maxlen); }while(n == 0x4000); buf[len] = 0; myfclose(fd); diff --git a/src/core/FileMgr.h b/src/core/FileMgr.h index 98a78360..f70451b7 100644 --- a/src/core/FileMgr.h +++ b/src/core/FileMgr.h @@ -9,7 +9,7 @@ public: static void ChangeDir(const char *dir); static void SetDir(const char *dir); static void SetDirMyDocuments(void); - static ssize_t LoadFile(const char *file, uint8 *buf, int unused, const char *mode); + static ssize_t LoadFile(const char *file, uint8 *buf, int maxlen, const char *mode); static int OpenFile(const char *file, const char *mode); static int OpenFile(const char *file) { return OpenFile(file, "rb"); } static int OpenFileForWriting(const char *file); diff --git a/src/core/Streaming.cpp b/src/core/Streaming.cpp index 03b49fd6..dae7fadb 100644 --- a/src/core/Streaming.cpp +++ b/src/core/Streaming.cpp @@ -509,10 +509,18 @@ CStreaming::ConvertBufferToObject(int8 *buf, int32 streamId) mi = CModelInfo::GetModelInfo(streamId); // Txd has to be loaded +#ifdef FIX_BUGS + if(!HasTxdLoaded(mi->GetTxdSlot())){ +#else + // texDict will exist even if only first part has loaded if(CTxdStore::GetSlot(mi->GetTxdSlot())->texDict == nil){ +#endif debug("failed to load %s because TXD %s is not in memory\n", mi->GetName(), CTxdStore::GetTxdName(mi->GetTxdSlot())); RemoveModel(streamId); +#ifndef FIX_BUGS + // if we're just waiting for it to load, don't remove this RemoveTxd(mi->GetTxdSlot()); +#endif ReRequestModel(streamId); RwStreamClose(stream, &mem); return false; |