summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Beulshausen <dbeu@php.net>2001-12-02 13:34:40 +0000
committerDaniel Beulshausen <dbeu@php.net>2001-12-02 13:34:40 +0000
commitce75d2699637e975f64b755b7308c494331a9b7b (patch)
tree7a7fd1c062f809e747f3d4a9a381cc659645ecc5
parent31a74b4aec6cc2ff783474d9cd733212bf4e42c9 (diff)
downloadphp-git-ce75d2699637e975f64b755b7308c494331a9b7b.tar.gz
fix php_win_err (wasn't threadsafe)
-rw-r--r--win32/winutil.c38
-rw-r--r--win32/winutil.h22
2 files changed, 46 insertions, 14 deletions
diff --git a/win32/winutil.c b/win32/winutil.c
index ec46aa742b..ab8008cf80 100644
--- a/win32/winutil.c
+++ b/win32/winutil.c
@@ -1,19 +1,31 @@
-#include <php.h>
+/*
+ +----------------------------------------------------------------------+
+ | PHP version 4.0 |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1997-2001 The PHP Group |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 2.02 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available at through the world-wide-web at |
+ | http://www.php.net/license/2_02.txt. |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Author: |
+ +----------------------------------------------------------------------+
+ */
-#ifndef THREAD_SAFE
-static char Win_Error_msg[256];
-#endif
+#include <php.h>
-PHPAPI char *php_win_err(void)
+PHPAPI char *php_win_err(int error)
{
+ char *buf;
+
FormatMessage(
- FORMAT_MESSAGE_FROM_SYSTEM,
- NULL,
- GetLastError(),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */
- (LPTSTR) Win_Error_msg,
- 256,
- NULL);
+ FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL, error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&buf, 0, NULL
+ );
- return Win_Error_msg;
+ return (buf ? (char *) buf : "");
}
diff --git a/win32/winutil.h b/win32/winutil.h
index b965a7fff1..9949a2937b 100644
--- a/win32/winutil.h
+++ b/win32/winutil.h
@@ -1 +1,21 @@
-PHPAPI extern char *php_win_err(void);
+/*
+ +----------------------------------------------------------------------+
+ | PHP version 4.0 |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1997-2001 The PHP Group |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 2.02 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available at through the world-wide-web at |
+ | http://www.php.net/license/2_02.txt. |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Author: |
+ +----------------------------------------------------------------------+
+ */
+
+PHPAPI char *php_win_err(int error);
+
+#define php_win_err() php_win_err(GetLastError())