Changeset 1749
- Timestamp:
- Feb 19, 2007, 11:28:16 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
zzuf/trunk/src/lib-mem.c
r1730 r1749 218 218 #define MMAP(fn, off_t) \ 219 219 do { \ 220 char *b = MAP_FAILED; \ 220 221 LOADSYM(fn); \ 221 ret = ORIG(fn)(start, length, prot, flags, fd, offset); \222 222 if(!_zz_ready || !_zz_iswatched(fd) || _zz_islocked(fd)) \ 223 return ret; \ 224 if(ret && length) \ 223 return ORIG(fn)(start, length, prot, flags, fd, offset); \ 224 ret = ORIG(fn)(NULL, length, prot, flags, fd, offset); \ 225 if(ret != MAP_FAILED && length) \ 225 226 { \ 226 char *b = malloc(length); \ 227 b = ORIG(fn)(start, length, PROT_READ | PROT_WRITE, \ 228 MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); \ 229 if(b == MAP_FAILED) \ 230 { \ 231 munmap(ret, length); \ 232 ret = MAP_FAILED; \ 233 } \ 234 } \ 235 if(b != MAP_FAILED) \ 236 { \ 227 237 int i, oldpos; \ 228 238 for(i = 0; i < nbmaps; i += 2) \ … … 284 294 continue; 285 295 286 free(start);296 ORIG(munmap)(start, length); 287 297 ret = ORIG(munmap)(maps[i + 1], length); 288 298 maps[i] = NULL;
Note: See TracChangeset
for help on using the changeset viewer.