]> granicus.if.org Git - php/commitdiff
Fix leaks
authorZeev Suraski <zeev@php.net>
Tue, 7 Jan 2003 12:11:40 +0000 (12:11 +0000)
committerZeev Suraski <zeev@php.net>
Tue, 7 Jan 2003 12:11:40 +0000 (12:11 +0000)
TSRM/TSRM.c
TSRM/tsrm_virtual_cwd.c

index fe096e9c283a0f6652e526f5f78be4bdfc00b4fb..f39114d77048eb516fb3a27e90bd69cd731c58f9 100644 (file)
@@ -508,6 +508,7 @@ TSRM_API void tsrm_mutex_free(MUTEX_T mutexp)
        if (mutexp) {
 #ifdef TSRM_WIN32
                DeleteCriticalSection(mutexp);
+               free(mutexp);
 #elif defined(NETWARE)
 #ifdef USE_MPK
                kMutexFree(mutexp);
index 4706ba102c50ed3a7f71e9b6a406b980aacc65a0..c14080ef059e58acfdc581d74b73adb2fc346261 100644 (file)
@@ -474,19 +474,23 @@ CWD_API int virtual_chdir_file(const char *path, int (*p_chdir)(const char *path
 CWD_API char *virtual_realpath(const char *path, char *real_path TSRMLS_DC)
 {
        cwd_state new_state;
-       int retval;
+       char *retval;
 
        CWD_STATE_COPY(&new_state, &CWDG(cwd));
-       retval = virtual_file_ex(&new_state, path, NULL, 1);
        
-       if (!retval) {
+       if (virtual_file_ex(&new_state, path, NULL, 1)==0) {
                int len = new_state.cwd_length>MAXPATHLEN-1?MAXPATHLEN-1:new_state.cwd_length;
+
                memcpy(real_path, new_state.cwd, len);
                real_path[len] = '\0';
-               return real_path;
+               retval = real_path;
+       } else {
+               retval = NULL;
        }
 
-       return NULL;
+       CWD_STATE_FREE(&new_state);
+
+       return retval;
 }
 
 CWD_API int virtual_filepath_ex(const char *path, char **filepath, verify_path_func verify_path TSRMLS_DC)