Index: TSRM/tsrm_virtual_cwd.c =================================================================== RCS file: /repository/TSRM/tsrm_virtual_cwd.c,v retrieving revision 1.74.2.9.2.16 diff -u -p -d -r1.74.2.9.2.16 tsrm_virtual_cwd.c --- TSRM/tsrm_virtual_cwd.c 1 Jan 2007 09:35:45 -0000 1.74.2.9.2.16 +++ TSRM/tsrm_virtual_cwd.c 16 Jan 2007 13:25:33 -0000 @@ -749,6 +749,7 @@ CWD_API FILE *virtual_fopen(const char * CWD_STATE_COPY(&new_state, &CWDG(cwd)); if (virtual_file_ex(&new_state, path, NULL, CWD_FILEPATH)) { + CWD_STATE_FREE(&new_state); return NULL; } @@ -765,6 +766,7 @@ CWD_API int virtual_access(const char *p CWD_STATE_COPY(&new_state, &CWDG(cwd)); if (virtual_file_ex(&new_state, pathname, NULL, CWD_REALPATH)) { + CWD_STATE_FREE(&new_state); return -1; } @@ -788,6 +790,7 @@ CWD_API int virtual_utime(const char *fi CWD_STATE_COPY(&new_state, &CWDG(cwd)); if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH)) { + CWD_STATE_FREE(&new_state); return -1; } @@ -805,6 +808,7 @@ CWD_API int virtual_chmod(const char *fi CWD_STATE_COPY(&new_state, &CWDG(cwd)); if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH)) { + CWD_STATE_FREE(&new_state); return -1; } @@ -822,6 +826,7 @@ CWD_API int virtual_chown(const char *fi CWD_STATE_COPY(&new_state, &CWDG(cwd)); if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH)) { + CWD_STATE_FREE(&new_state); return -1; } @@ -847,6 +852,7 @@ CWD_API int virtual_open(const char *pat CWD_STATE_COPY(&new_state, &CWDG(cwd)); if (virtual_file_ex(&new_state, path, NULL, CWD_FILEPATH)) { + CWD_STATE_FREE(&new_state); return -1; } @@ -873,6 +879,7 @@ CWD_API int virtual_creat(const char *pa CWD_STATE_COPY(&new_state, &CWDG(cwd)); if (virtual_file_ex(&new_state, path, NULL, CWD_FILEPATH)) { + CWD_STATE_FREE(&new_state); return -1; } @@ -890,12 +897,15 @@ CWD_API int virtual_rename(char *oldname CWD_STATE_COPY(&old_state, &CWDG(cwd)); if (virtual_file_ex(&old_state, oldname, NULL, CWD_REALPATH)) { + CWD_STATE_FREE(&old_state); return -1; } oldname = old_state.cwd; CWD_STATE_COPY(&new_state, &CWDG(cwd)); if (virtual_file_ex(&new_state, newname, NULL, CWD_FILEPATH)) { + CWD_STATE_FREE(&old_state); + CWD_STATE_FREE(&new_state); return -1; } newname = new_state.cwd; @@ -915,6 +925,7 @@ CWD_API int virtual_stat(const char *pat CWD_STATE_COPY(&new_state, &CWDG(cwd)); if (virtual_file_ex(&new_state, path, NULL, CWD_REALPATH)) { + CWD_STATE_FREE(&new_state); return -1; } @@ -932,6 +943,7 @@ CWD_API int virtual_lstat(const char *pa CWD_STATE_COPY(&new_state, &CWDG(cwd)); if (virtual_file_ex(&new_state, path, NULL, CWD_REALPATH)) { + CWD_STATE_FREE(&new_state); return -1; } @@ -949,6 +961,7 @@ CWD_API int virtual_unlink(const char *p CWD_STATE_COPY(&new_state, &CWDG(cwd)); if (virtual_file_ex(&new_state, path, NULL, CWD_EXPAND)) { + CWD_STATE_FREE(&new_state); return -1; } @@ -965,6 +978,7 @@ CWD_API int virtual_mkdir(const char *pa CWD_STATE_COPY(&new_state, &CWDG(cwd)); if (virtual_file_ex(&new_state, pathname, NULL, CWD_FILEPATH)) { + CWD_STATE_FREE(&new_state); return -1; } @@ -984,6 +998,7 @@ CWD_API int virtual_rmdir(const char *pa CWD_STATE_COPY(&new_state, &CWDG(cwd)); if (virtual_file_ex(&new_state, pathname, NULL, CWD_EXPAND)) { + CWD_STATE_FREE(&new_state); return -1; } @@ -1004,6 +1019,7 @@ CWD_API DIR *virtual_opendir(const char CWD_STATE_COPY(&new_state, &CWDG(cwd)); if (virtual_file_ex(&new_state, pathname, NULL, CWD_REALPATH)) { + CWD_STATE_FREE(&new_state); return NULL; }