Index: svgalib-1.4.3/src/fbdev.c =================================================================== --- svgalib-1.4.3.orig/src/fbdev.c 2011-01-06 14:24:59.000000000 +0100 +++ svgalib-1.4.3/src/fbdev.c 2011-01-06 14:27:39.000000000 +0100 @@ -141,9 +141,17 @@ if (page != oldpage) { // munmap(BANKED_MEM_POINTER, __svgalib_banked_mem_size); - mmap(BANKED_MEM_POINTER, __svgalib_banked_mem_size, + long size = __svgalib_banked_mem_size; + long offs = page * __svgalib_banked_mem_size; + if (size + offs > __svgalib_linear_mem_size) + size = __svgalib_linear_mem_size - offs; + if (size <= 0) { + fprintf (stderr, "invalid page %i requested", page); + } + + mmap(BANKED_MEM_POINTER, size, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, - fbdev_fd, page * __svgalib_banked_mem_size); + fbdev_fd, offs); oldpage = page; } }