fix ref count issues on file modify while in use. lost handles and

dictionaries we depend on.


SVN revision: 33894
This commit is contained in:
Carsten Haitzler 2008-03-02 04:56:57 +00:00
parent 8a3e188813
commit 20d79e8612
1 changed files with 11 additions and 6 deletions

View File

@ -668,7 +668,9 @@ eet_clearcache(void)
} }
for (i = 0; i < num; i++) for (i = 0; i < num; i++)
eet_close(closelist[i]); {
eet_close(closelist[i]);
}
} }
} }
@ -1134,6 +1136,7 @@ eet_open(const char *file, Eet_File_Mode mode)
if (ef && (file_stat.st_mtime != ef->mtime)) if (ef && (file_stat.st_mtime != ef->mtime))
{ {
ef->delete_me_now = 1; ef->delete_me_now = 1;
ef->references++;
eet_close(ef); eet_close(ef);
ef = NULL; ef = NULL;
} }
@ -1235,11 +1238,13 @@ eet_open(const char *file, Eet_File_Mode mode)
if (ef->ed) if (ef->ed)
{ {
for (i = 0; i < ef->ed->count; ++i) for (i = 0; i < ef->ed->count; ++i)
if (ef->ed->all[i].mmap) {
{ if (ef->ed->all[i].mmap)
ef->ed->all[i].str = strdup(ef->ed->all[i].mmap); {
ef->ed->all[i].mmap = NULL; ef->ed->all[i].str = strdup(ef->ed->all[i].mmap);
} ef->ed->all[i].mmap = NULL;
}
}
} }
fclose(ef->fp); fclose(ef->fp);