- Mac ROM and RAM are allocated with malloc() instead of "new" (because

-fomit-frame-pointer breaks exceptions), and an error message is displayed
  if the allocation fails
This commit is contained in:
cebix
2000-07-24 15:17:07 +00:00
parent 0e6bdfdce5
commit 1e8598eefa

View File

@@ -301,9 +301,13 @@ int main(int argc, char **argv)
for (int i=0; i<0x80000; i+=4096) for (int i=0; i<0x80000; i+=4096)
mmap(good_address_map + i + 0x00400000, 4096, PROT_READ, MAP_FIXED | MAP_PRIVATE, good_address_fd, 0); mmap(good_address_map + i + 0x00400000, 4096, PROT_READ, MAP_FIXED | MAP_PRIVATE, good_address_fd, 0);
#else #else
RAMBaseHost = new uint8[RAMSize]; RAMBaseHost = (uint8 *)malloc(RAMSize);
ROMBaseHost = new uint8[0x100000]; ROMBaseHost = (uint8 *)malloc(0x100000);
#endif #endif
if (RAMBaseHost == NULL || ROMBaseHost == NULL) {
ErrorAlert(GetString(STR_NO_MEM_ERR));
QuitEmulator();
}
#if REAL_ADDRESSING && !EMULATED_68K #if REAL_ADDRESSING && !EMULATED_68K
RAMBaseMac = (uint32)RAMBaseHost; RAMBaseMac = (uint32)RAMBaseHost;
ROMBaseMac = (uint32)ROMBaseHost; ROMBaseMac = (uint32)ROMBaseHost;
@@ -561,15 +565,23 @@ void QuitEmulator(void)
ExitAll(); ExitAll();
// Delete ROM area // Delete ROM area
delete[] ROMBaseHost; if (ROMBaseHost) {
free(ROMBaseHost);
ROMBaseHost = NULL;
}
// Delete RAM area // Delete RAM area
delete[] RAMBaseHost; if (RAMBaseHost) {
free(RAMBaseHost);
RAMBaseHost = NULL;
}
#if !EMULATED_68K #if !EMULATED_68K
// Delete scratch memory area // Delete scratch memory area
if (ScratchMem) if (ScratchMem) {
free((void *)(ScratchMem - SCRATCH_MEM_SIZE/2)); free((void *)(ScratchMem - SCRATCH_MEM_SIZE/2));
ScratchMem = NULL;
}
#endif #endif
#if REAL_ADDRESSING #if REAL_ADDRESSING