diff --git a/code/userprog/addrspace.cc b/code/userprog/addrspace.cc index 09cd5bb..758ea18 100644 --- a/code/userprog/addrspace.cc +++ b/code/userprog/addrspace.cc @@ -102,7 +102,9 @@ AddrSpace::AddrSpace (OpenFile * executable) // pageTable[i].physicalPage = i; // for now, phys page # = virtual page # #ifdef CHANGED int newPage = pageProvider->GetEmptyPage(); - ASSERT(newPage != -1); + if (newPage == -1) { + throw std::bad_alloc(); + } pageTable[i].physicalPage = newPage; #endif pageTable[i].valid = TRUE; diff --git a/code/userprog/userthread.cc b/code/userprog/userthread.cc index 8de15db..7a84f43 100644 --- a/code/userprog/userthread.cc +++ b/code/userprog/userthread.cc @@ -99,7 +99,7 @@ void do_ThreadExit(){ void StartUserProc( void * args ){ currentThread->space->InitRegisters(); currentThread->space->RestoreState(); - machine->DumpMem("memory.svg"); + //machine->DumpMem("memory.svg"); machine->Run(); } @@ -119,7 +119,7 @@ int do_ForkExec( const char * c){ try { space = new AddrSpace(file); }catch(const std::bad_alloc& e) { - fprintf(stderr,"no empty space on memory\n"); + fprintf(stderr,"Could not allocate Memory\n"); Exit(1); }