summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--win32/time.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/win32/time.c b/win32/time.c
index 75539748e8..9b5030a0f2 100644
--- a/win32/time.c
+++ b/win32/time.c
@@ -27,7 +27,9 @@
typedef VOID (WINAPI *MyGetSystemTimeAsFileTime)(LPFILETIME lpSystemTimeAsFileTime);
-static MyGetSystemTimeAsFileTime get_time_func(void)
+static MyGetSystemTimeAsFileTime timefunc = NULL;
+
+static zend_always_inline MyGetSystemTimeAsFileTime get_time_func(void)
{
MyGetSystemTimeAsFileTime timefunc = NULL;
HMODULE hMod = LoadLibrary("kernel32.dll");
@@ -45,19 +47,16 @@ static MyGetSystemTimeAsFileTime get_time_func(void)
return timefunc;
}
-int getfilesystemtime(struct timeval *tv)
+static zend_always_inline int getfilesystemtime(struct timeval *tv)
{
FILETIME ft;
unsigned __int64 ff = 0;
- MyGetSystemTimeAsFileTime timefunc;
ULARGE_INTEGER fft;
- timefunc = get_time_func();
- if (timefunc) {
- timefunc(&ft);
- } else {
- GetSystemTimeAsFileTime(&ft);
+ if (!timefunc) {
+ timefunc = get_time_func();
}
+ timefunc(&ft);
/*
* Do not cast a pointer to a FILETIME structure to either a