X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fuserprog%2Fprocess.c;fp=src%2Fuserprog%2Fprocess.c;h=8c410aba98519a273d5d7a60155468f5b4ffc556;hb=68d3a93433f506864f6c6cec8af0f5f4538a4a40;hp=a81ca590fea187321197c699950df0e38cdbc40f;hpb=99fba45ab829c0be9ac79e344f00fb7c1700d5f9;p=pintos-anon diff --git a/src/userprog/process.c b/src/userprog/process.c index a81ca59..8c410ab 100644 --- a/src/userprog/process.c +++ b/src/userprog/process.c @@ -333,7 +333,9 @@ load_segment (struct file *file, const struct Elf32_Phdr *phdr) return false; /* Load the segment page-by-page into memory. */ - filesz_left = phdr->p_filesz + (phdr->p_vaddr & PGMASK); + filesz_left = phdr->p_filesz; + if (filesz_left > 0) + filesz_left += phdr->p_vaddr & PGMASK; file_seek (file, ROUND_DOWN (phdr->p_offset, PGSIZE)); for (upage = start; upage < (uint8_t *) end; upage += PGSIZE) {