summaryrefslogtreecommitdiff
path: root/TSRM
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2003-01-07 12:11:40 +0000
committerZeev Suraski <zeev@php.net>2003-01-07 12:11:40 +0000
commite8de102cd64da2e2825cb020d42e45680ba397e0 (patch)
treeb2e711472b2afa7346d871036508b08564f6b130 /TSRM
parent651cea08f01760334bf6b828642d97e331842963 (diff)
downloadphp-git-e8de102cd64da2e2825cb020d42e45680ba397e0.tar.gz
Fix leaks
Diffstat (limited to 'TSRM')
-rw-r--r--TSRM/TSRM.c1
-rw-r--r--TSRM/tsrm_virtual_cwd.c14
2 files changed, 10 insertions, 5 deletions
diff --git a/TSRM/TSRM.c b/TSRM/TSRM.c
index fe096e9c28..f39114d770 100644
--- a/TSRM/TSRM.c
+++ b/TSRM/TSRM.c
@@ -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);
diff --git a/TSRM/tsrm_virtual_cwd.c b/TSRM/tsrm_virtual_cwd.c
index 4706ba102c..c14080ef05 100644
--- a/TSRM/tsrm_virtual_cwd.c
+++ b/TSRM/tsrm_virtual_cwd.c
@@ -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)