[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-cvs
Subject:    [PHP-CVS] com php-src: compact the code to preserve the error info after state freeing: =?UTF-8?Q?Ze
From:       Anatol Belski <ab () php ! net>
Date:       2013-10-30 19:46:08
Message-ID: php-mail-bb4b34597ce7644d87265464bcf4b17b2027270939 () git ! php ! net
[Download RAW message or body]

Commit:    abb962d54d8a4d22095975d94cda7ea5d2c56fa8
Author:    Anatol Belski <ab@php.net>         Wed, 30 Oct 2013 20:46:08 +0100
Parents:   fc707a27ff1ede5494318e9d0eafd0ebb87d1d2e
Branches:  master

Link:       http://git.php.net/?p=php-src.git;a=commitdiff;h=abb962d54d8a4d22095975d94cda7ea5d2c56fa8

Log:
compact the code to preserve the error info after state freeing

Changed paths:
  M  Zend/zend_virtual_cwd.c


["diff_abb962d54d8a4d22095975d94cda7ea5d2c56fa8.txt" (text/plain)]

diff --git a/Zend/zend_virtual_cwd.c b/Zend/zend_virtual_cwd.c
index 75bf3d2..f281606 100644
--- a/Zend/zend_virtual_cwd.c
+++ b/Zend/zend_virtual_cwd.c
@@ -127,7 +127,6 @@ static int php_check_dots(const char *element, int n)
 #define TOKENIZER_STRING "/"
 #endif
 
-
 /* default macros */
 
 #ifndef IS_DIRECTORY_UP
@@ -158,6 +157,16 @@ static int php_check_dots(const char *element, int n)
  	(s)->cwd = NULL;
 
 #ifdef TSRM_WIN32
+# define CWD_STATE_FREE_ERR(state) do { \
+		DWORD last_error = GetLastError(); \
+		CWD_STATE_FREE(state); \
+		SetLastError(last_error); \
+	} while (0)
+#else
+# define CWD_STATE_FREE_ERR(state) CWD_STATE_FREE(state)
+#endif
+
+#ifdef TSRM_WIN32
 
 #ifdef CTL_CODE
 #undef CTL_CODE
@@ -432,7 +441,6 @@ static void cwd_globals_ctor(virtual_cwd_globals *cwd_g TSRMLS_DC) /* {{{ */
 
 static void cwd_globals_dtor(virtual_cwd_globals *cwd_g TSRMLS_DC) /* {{{ */
 {
-/*	CWD_STATE_FREE(&cwd_globals->cwd); */
 	realpath_cache_clean(TSRMLS_C);
 }
 /* }}} */
@@ -1488,9 +1496,6 @@ CWD_API FILE *virtual_fopen(const char *path, const char *mode TSRMLS_DC) /* {{{
 {
 	cwd_state new_state;
 	FILE *f;
-#ifdef TSRM_WIN32
-	DWORD last_error;
-#endif
 
 	if (path[0] == '\0') { /* Fail to open empty path */
 		return NULL;
@@ -1498,25 +1503,14 @@ CWD_API FILE *virtual_fopen(const char *path, const char *mode TSRMLS_DC) /* {{{
 
 	CWD_STATE_COPY(&new_state, &CWDG(cwd));
 	if (virtual_file_ex(&new_state, path, NULL, CWD_EXPAND TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&new_state);
 		return NULL;
 	}
 
 	f = fopen(new_state.cwd, mode);
 
-#ifdef TSRM_WIN32
-	last_error = GetLastError();
-#endif
-	CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-	SetLastError(last_error);
-#endif
+	CWD_STATE_FREE_ERR(&new_state);
+
 	return f;
 }
 /* }}} */
@@ -1525,33 +1519,20 @@ CWD_API int virtual_access(const char *pathname, int mode TSRMLS_DC) /* {{{ */
 {
 	cwd_state new_state;
 	int ret;
-#ifdef TSRM_WIN32
-	DWORD last_error;
-#endif
 
 	CWD_STATE_COPY(&new_state, &CWDG(cwd));
 	if (virtual_file_ex(&new_state, pathname, NULL, CWD_REALPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&new_state);
 		return -1;
 	}
 
 #if defined(TSRM_WIN32)
 	ret = tsrm_win32_access(new_state.cwd, mode TSRMLS_CC);
-	last_error = GetLastError();
 #else
 	ret = access(new_state.cwd, mode);
 #endif
 
-	CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-	SetLastError(last_error);
-#endif
+	CWD_STATE_FREE_ERR(&new_state);
 
 	return ret;
 }
@@ -1611,33 +1592,20 @@ CWD_API int virtual_utime(const char *filename, struct utimbuf *buf TSRMLS_DC) /
 {
 	cwd_state new_state;
 	int ret;
-#ifdef TSRM_WIN32
-	DWORD last_error;
-#endif
 
 	CWD_STATE_COPY(&new_state, &CWDG(cwd));
 	if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&new_state);
 		return -1;
 	}
 
 #ifdef TSRM_WIN32
 	ret = win32_utime(new_state.cwd, buf);
-	last_error = GetLastError();
 #else
 	ret = utime(new_state.cwd, buf);
 #endif
 
-	CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-	SetLastError(last_error);
-#endif
+	CWD_STATE_FREE_ERR(&new_state);
 	return ret;
 }
 /* }}} */
@@ -1647,31 +1615,16 @@ CWD_API int virtual_chmod(const char *filename, mode_t mode TSRMLS_DC) /* {{{ */
 {
 	cwd_state new_state;
 	int ret;
-#ifdef TSRM_WIN32
-	DWORD last_error;
-#endif
 
 	CWD_STATE_COPY(&new_state, &CWDG(cwd));
 	if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&new_state);
 		return -1;
 	}
 
 	ret = chmod(new_state.cwd, mode);
-#ifdef TSRM_WIN32
-	last_error = GetLastError();
-#endif
 
-	CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-	SetLastError(last_error);
-#endif
+	CWD_STATE_FREE_ERR(&new_state);
 	return ret;
 }
 /* }}} */
@@ -1681,19 +1634,10 @@ CWD_API int virtual_chown(const char *filename, uid_t owner, gid_t group, int li
 {
 	cwd_state new_state;
 	int ret;
-#ifdef TSRM_WIN32
-	DWORD last_error;
-#endif
 
 	CWD_STATE_COPY(&new_state, &CWDG(cwd));
 	if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&new_state);
 		return -1;
 	}
 
@@ -1707,13 +1651,7 @@ CWD_API int virtual_chown(const char *filename, uid_t owner, gid_t group, int li
 		ret = chown(new_state.cwd, owner, group);
 	}
 
-#ifdef TSRM_WIN32
-	last_error = GetLastError();
-#endif
-	CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-	SetLastError(last_error);
-#endif
+	CWD_STATE_FREE_ERR(&new_state);
 	return ret;
 }
 /* }}} */
@@ -1723,19 +1661,10 @@ CWD_API int virtual_open(const char *path TSRMLS_DC, int flags, ...) /* {{{ */
 {
 	cwd_state new_state;
 	int f;
-#ifdef TSRM_WIN32
-	DWORD last_error;
-#endif
 
 	CWD_STATE_COPY(&new_state, &CWDG(cwd));
 	if (virtual_file_ex(&new_state, path, NULL, CWD_FILEPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&new_state);
 		return -1;
 	}
 
@@ -1751,13 +1680,7 @@ CWD_API int virtual_open(const char *path TSRMLS_DC, int flags, ...) /* {{{ */
 	} else {
 		f = open(new_state.cwd, flags);
 	}
-#ifdef TSRM_WIN32
-	last_error = GetLastError();
-#endif
-	CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-	SetLastError(last_error);
-#endif
+	CWD_STATE_FREE_ERR(&new_state);
 	return f;
 }
 /* }}} */
@@ -1766,31 +1689,16 @@ CWD_API int virtual_creat(const char *path, mode_t mode TSRMLS_DC) /* {{{ */
 {
 	cwd_state new_state;
 	int f;
-#ifdef TSRM_WIN32
-	DWORD last_error;
-#endif
 
 	CWD_STATE_COPY(&new_state, &CWDG(cwd));
 	if (virtual_file_ex(&new_state, path, NULL, CWD_FILEPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&new_state);
 		return -1;
 	}
 
 	f = creat(new_state.cwd,  mode);
 
-#ifdef TSRM_WIN32
-	last_error = GetLastError();
-#endif
-	CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-	SetLastError(last_error);
-#endif
+	CWD_STATE_FREE_ERR(&new_state);
 	return f;
 }
 /* }}} */
@@ -1800,33 +1708,18 @@ CWD_API int virtual_rename(const char *oldname, const char *newname TSRMLS_DC) /
 	cwd_state old_state;
 	cwd_state new_state;
 	int retval;
-#ifdef TSRM_WIN32
-	DWORD last_error;
-#endif
 
 	CWD_STATE_COPY(&old_state, &CWDG(cwd));
 	if (virtual_file_ex(&old_state, oldname, NULL, CWD_EXPAND TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&old_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&old_state);
 		return -1;
 	}
 	oldname = old_state.cwd;
 
 	CWD_STATE_COPY(&new_state, &CWDG(cwd));
 	if (virtual_file_ex(&new_state, newname, NULL, CWD_EXPAND TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&old_state);
-		CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&old_state);
+		CWD_STATE_FREE_ERR(&new_state);
 		return -1;
 	}
 	newname = new_state.cwd;
@@ -1836,17 +1729,12 @@ CWD_API int virtual_rename(const char *oldname, const char *newname TSRMLS_DC) /
 #ifdef TSRM_WIN32
 	/* MoveFileEx returns 0 on failure, other way 'round for this function */
 	retval = (MoveFileEx(oldname, newname, MOVEFILE_REPLACE_EXISTING|MOVEFILE_COPY_ALLOWED) == 0) ? -1 : 0;
-	last_error = GetLastError();
 #else
 	retval = rename(oldname, newname);
 #endif
 
-	CWD_STATE_FREE(&old_state);
-	CWD_STATE_FREE(&new_state);
-
-#ifdef TSRM_WIN32
-	SetLastError(last_error);
-#endif
+	CWD_STATE_FREE_ERR(&old_state);
+	CWD_STATE_FREE_ERR(&new_state);
 
 	return retval;
 }
@@ -1856,31 +1744,16 @@ CWD_API int virtual_stat(const char *path, struct stat *buf TSRMLS_DC) /* {{{ */
 {
 	cwd_state new_state;
 	int retval;
-#ifdef TSRM_WIN32
-	DWORD last_error;
-#endif
 
 	CWD_STATE_COPY(&new_state, &CWDG(cwd));
 	if (virtual_file_ex(&new_state, path, NULL, CWD_REALPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&new_state);
 		return -1;
 	}
 
 	retval = php_sys_stat(new_state.cwd, buf);
 
-#ifdef TSRM_WIN32
-	last_error = GetLastError();
-#endif
-	CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-	SetLastError(last_error);
-#endif
+	CWD_STATE_FREE_ERR(&new_state);
 	return retval;
 }
 /* }}} */
@@ -1889,31 +1762,16 @@ CWD_API int virtual_lstat(const char *path, struct stat *buf TSRMLS_DC) /* {{{ *
 {
 	cwd_state new_state;
 	int retval;
-#ifdef TSRM_WIN32
-	DWORD last_error;
-#endif
 
 	CWD_STATE_COPY(&new_state, &CWDG(cwd));
 	if (virtual_file_ex(&new_state, path, NULL, CWD_EXPAND TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&new_state);
 		return -1;
 	}
 
 	retval = php_sys_lstat(new_state.cwd, buf);
 
-#ifdef TSRM_WIN32
-	last_error = GetLastError();
-#endif
-	CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-	SetLastError(last_error);
-#endif
+	CWD_STATE_FREE_ERR(&new_state);
 	return retval;
 }
 /* }}} */
@@ -1922,31 +1780,16 @@ CWD_API int virtual_unlink(const char *path TSRMLS_DC) /* {{{ */
 {
 	cwd_state new_state;
 	int retval;
-#ifdef TSRM_WIN32
-	DWORD last_error;
-#endif
 
 	CWD_STATE_COPY(&new_state, &CWDG(cwd));
 	if (virtual_file_ex(&new_state, path, NULL, CWD_EXPAND TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&new_state);
 		return -1;
 	}
 
 	retval = unlink(new_state.cwd);
 
-#ifdef TSRM_WIN32
-	last_error = GetLastError();
-#endif
-	CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-	SetLastError(last_error);
-#endif
+	CWD_STATE_FREE_ERR(&new_state);
 	return retval;
 }
 /* }}} */
@@ -1955,32 +1798,19 @@ CWD_API int virtual_mkdir(const char *pathname, mode_t mode TSRMLS_DC) /* {{{ */
 {
 	cwd_state new_state;
 	int retval;
-#ifdef TSRM_WIN32
-	DWORD last_error;
-#endif
 
 	CWD_STATE_COPY(&new_state, &CWDG(cwd));
 	if (virtual_file_ex(&new_state, pathname, NULL, CWD_FILEPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&new_state);
 		return -1;
 	}
 
 #ifdef TSRM_WIN32
 	retval = mkdir(new_state.cwd);
-	last_error = GetLastError();
 #else
 	retval = mkdir(new_state.cwd, mode);
 #endif
-	CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-	SetLastError(last_error);
-#endif
+	CWD_STATE_FREE_ERR(&new_state);
 	return retval;
 }
 /* }}} */
@@ -1989,31 +1819,16 @@ CWD_API int virtual_rmdir(const char *pathname TSRMLS_DC) /* {{{ */
 {
 	cwd_state new_state;
 	int retval;
-#ifdef TSRM_WIN32
-	DWORD last_error;
-#endif
 
 	CWD_STATE_COPY(&new_state, &CWDG(cwd));
 	if (virtual_file_ex(&new_state, pathname, NULL, CWD_EXPAND TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&new_state);
 		return -1;
 	}
 
 	retval = rmdir(new_state.cwd);
 
-#ifdef TSRM_WIN32
-	last_error = GetLastError();
-#endif
-	CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-	SetLastError(last_error);
-#endif
+	CWD_STATE_FREE_ERR(&new_state);
 	return retval;
 }
 /* }}} */
@@ -2026,31 +1841,16 @@ CWD_API DIR *virtual_opendir(const char *pathname TSRMLS_DC) /* {{{ */
 {
 	cwd_state new_state;
 	DIR *retval;
-#ifdef TSRM_WIN32
-	DWORD last_error;
-#endif
 
 	CWD_STATE_COPY(&new_state, &CWDG(cwd));
 	if (virtual_file_ex(&new_state, pathname, NULL, CWD_REALPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
-		last_error = GetLastError();
-#endif
-		CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-		SetLastError(last_error);
-#endif
+		CWD_STATE_FREE_ERR(&new_state);
 		return NULL;
 	}
 
 	retval = opendir(new_state.cwd);
 
-#ifdef TSRM_WIN32
-	last_error = GetLastError();
-#endif
-	CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
-	SetLastError(last_error);
-#endif
+	CWD_STATE_FREE_ERR(&new_state);
 	return retval;
 }
 /* }}} */

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic