X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=libpcsxcore%2Fmisc.c;fp=libpcsxcore%2Fmisc.c;h=27b9499320da8ccaaef269a0d13cc121bd5dc2aa;hp=aee6e3cefb8a72dc37bc13dbb7c2ed56bcc658ce;hb=96bef96ff61e7dae69cc793c310fcbf2698a38db;hpb=d5c08ed34ac422bafb933eed8ef5a30e8ed2dc5e diff --git a/libpcsxcore/misc.c b/libpcsxcore/misc.c index aee6e3ce..27b94993 100644 --- a/libpcsxcore/misc.c +++ b/libpcsxcore/misc.c @@ -409,6 +409,22 @@ static int PSXGetFileType(FILE *f) { return INVALID_EXE; } +// temporary pandora workaround.. +// FIXME: remove +size_t fread_to_ram(void *ptr, size_t size, size_t nmemb, FILE *stream) +{ + void *tmp; + size_t ret = 0; + + tmp = malloc(size * nmemb); + if (tmp) { + ret = fread(tmp, size, nmemb, stream); + memcpy(ptr, tmp, size * nmemb); + free(tmp); + } + return ret; +} + int Load(const char *ExePath) { FILE *tmpFile; EXE_HEADER tmpHead; @@ -435,7 +451,7 @@ int Load(const char *ExePath) { mem = PSXM(section_address); if (mem != NULL) { fseek(tmpFile, 0x800, SEEK_SET); - fread(mem, section_size, 1, tmpFile); + fread_to_ram(mem, section_size, 1, tmpFile); psxCpu->Clear(section_address, section_size / 4); } fclose(tmpFile); @@ -461,7 +477,7 @@ int Load(const char *ExePath) { #endif mem = PSXM(section_address); if (mem != NULL) { - fread(mem, section_size, 1, tmpFile); + fread_to_ram(mem, section_size, 1, tmpFile); psxCpu->Clear(section_address, section_size / 4); } break;