avoid fd overflow.

SVN revision: 18356
This commit is contained in:
Carsten Haitzler 2005-11-07 03:15:22 +00:00
parent d1861a8d4c
commit 09e699d360
1 changed files with 22 additions and 0 deletions

View File

@ -117,6 +117,28 @@ eet_cache_add(Eet_File *ef, Eet_File ***cache, int *cache_num, int *cache_alloc)
Eet_File **new_cache;
int new_cache_num, new_cache_alloc;
new_cache_num = *cache_num;
if (new_cache_num > 128) /* avoid fd overruns - limit to 128 (most recent) in the cache */
{
Eet_File *del_ef = NULL;
int i;
new_cache = *cache;
for (i = 0; i < new_cache_num; i++)
{
if (new_cache[i]->references == 0)
{
del_ef = new_cache[i];
break;
}
}
if (del_ef)
{
eet_cacheburst_mode = 0;
eet_cache_del(del_ef, cache, cache_num, cache_alloc);
eet_cacheburst_mode = 1;
}
}
new_cache = *cache;
new_cache_num = *cache_num;
new_cache_alloc = *cache_alloc;