fix huge persistent cache files bug

git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@807 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
Jeroen Meijer 2004-12-25 13:37:08 +00:00
parent bc994e9a9b
commit 4fa5233b39

View File

@ -22,7 +22,7 @@
#define MAX_CELL_SIZE 0x1000 /* pixels */
#define IS_PERSISTENT(id) (g_pstcache_fd[id] > 0)
#define IS_PERSISTENT(id) (id < 8 && g_pstcache_fd[id] > 0)
extern int g_server_bpp;
extern uint32 g_stamp;
@ -42,7 +42,7 @@ pstcache_touch_bitmap(uint8 cache_id, uint16 cache_idx, uint32 stamp)
{
int fd;
if (!IS_PERSISTENT(cache_id))
if (!IS_PERSISTENT(cache_id) || cache_idx >= BMPCACHE2_NUM_PSTCELLS)
return;
fd = g_pstcache_fd[cache_id];
@ -59,7 +59,10 @@ pstcache_load_bitmap(uint8 cache_id, uint16 cache_idx)
CELLHEADER cellhdr;
HBITMAP bitmap;
if (!(g_bitmap_cache_persist_enable && IS_PERSISTENT(cache_id)))
if (!g_bitmap_cache_persist_enable)
return False;
if (!IS_PERSISTENT(cache_id) || cache_idx >= BMPCACHE2_NUM_PSTCELLS)
return False;
fd = g_pstcache_fd[cache_id];
@ -85,7 +88,7 @@ pstcache_put_bitmap(uint8 cache_id, uint16 cache_idx, uint8 * bitmap_id,
int fd;
CELLHEADER cellhdr;
if (!IS_PERSISTENT(cache_id))
if (!IS_PERSISTENT(cache_id) || cache_idx >= BMPCACHE2_NUM_PSTCELLS)
return False;
memcpy(cellhdr.bitmap_id, bitmap_id, sizeof(BITMAP_ID));