Wine-devel
Threads by month
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
December 2020
- 68 participants
- 416 discussions
[PATCH] ws2_32: Fix buffer size check in WSAIoctl() for SIO_GET_INTERFACE_LIST.
by Paul Gofman 16 Dec '20
by Paul Gofman 16 Dec '20
16 Dec '20
Fixes out of bound memory access in Anno 1404 Addon.
Signed-off-by: Paul Gofman <pgofman(a)codeweavers.com>
---
This is not a (recent) regression, but this is out of bound memory acccess andd
the fix is trivial, so suggesting during the code freeze.
dlls/ws2_32/socket.c | 3 ++-
dlls/ws2_32/tests/sock.c | 25 +++++++++++++++++++++++++
2 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 6cb35bcd135..05097ce53b8 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -4618,10 +4618,11 @@ INT WINAPI WSAIoctl(SOCKET s, DWORD code, LPVOID in_buff, DWORD in_size, LPVOID
if (ptr->IpAddressList.IpAddress.String[0] == '\0')
continue;
- if ((numInt + 1)*sizeof(INTERFACE_INFO)/sizeof(IP_ADAPTER_INFO) > out_size)
+ if ((numInt + 1) * sizeof(INTERFACE_INFO) > out_size)
{
WARN("Buffer too small = %u, out_size = %u\n", numInt + 1, out_size);
status = WSAEFAULT;
+ if (ret_size) *ret_size = 0;
break;
}
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 8711b65fcea..98cc3881853 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -10514,6 +10514,30 @@ static void test_WSCGetProviderPath(void)
ok(len == 256, "Got unexpected len %d.\n", len);
}
+static void test_wsaioctl(void)
+{
+ char buffer[4096];
+ DWORD size;
+ SOCKET s;
+ int ret;
+
+ s = WSASocketW(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED);
+ ok(s != INVALID_SOCKET, "failed to create socket, error %u\n", WSAGetLastError());
+
+ size = 0xdeadbeef;
+ ret = WSAIoctl(s, SIO_GET_INTERFACE_LIST, NULL, 0, buffer, sizeof(buffer), &size, NULL, NULL);
+ ok(!ret, "Got unexpected ret %d.\n", ret);
+ ok(size && size != 0xdeadbeef && !(size % sizeof(INTERFACE_INFO)), "Got unexpected size %u.\n", size);
+
+ size = 0xdeadbeef;
+ ret = WSAIoctl(s, SIO_GET_INTERFACE_LIST, NULL, 0, buffer, sizeof(INTERFACE_INFO), &size, NULL, NULL);
+ ok(ret == -1, "Got unexpected ret %d.\n", ret);
+ ok(WSAGetLastError() == WSAEFAULT, "Got unexpected error %d.\n", WSAGetLastError());
+ ok(!size, "Got unexpected size %u.\n", size);
+
+ closesocket(s);
+}
+
START_TEST( sock )
{
int i;
@@ -10595,6 +10619,7 @@ START_TEST( sock )
/* this is an io heavy test, do it at the end so the kernel doesn't start dropping packets */
test_send();
test_synchronous_WSAIoctl();
+ test_wsaioctl();
Exit();
}
--
2.29.2
1
0
[PATCH] -Add SORT_DIGITSASNUMBERS flag to CompareStringsEx (Fixes FL Studio 20.8 crash on startup)
by John Zourlios 16 Dec '20
by John Zourlios 16 Dec '20
16 Dec '20
---
dlls/kernelbase/locale.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/kernelbase/locale.c b/dlls/kernelbase/locale.c
index c60b796aa48..51085f4377a 100644
--- a/dlls/kernelbase/locale.c
+++ b/dlls/kernelbase/locale.c
@@ -3021,7 +3021,7 @@ INT WINAPI CompareStringEx( const WCHAR *locale, DWORD flags, const WCHAR *str1,
{
DWORD supported_flags = NORM_IGNORECASE | NORM_IGNORENONSPACE | NORM_IGNORESYMBOLS | SORT_STRINGSORT |
NORM_IGNOREKANATYPE | NORM_IGNOREWIDTH | LOCALE_USE_CP_ACP;
- DWORD semistub_flags = NORM_LINGUISTIC_CASING | LINGUISTIC_IGNORECASE | 0x10000000;
+ DWORD semistub_flags = NORM_LINGUISTIC_CASING | LINGUISTIC_IGNORECASE | 0x10000000 | SORT_DIGITSASNUMBERS;
/* 0x10000000 is related to diacritics in Arabic, Japanese, and Hebrew */
INT ret;
static int once;
--
2.29.2
2
1
Signed-off-by: Byeongsik Jeon <bsjeon(a)hanmail.net>
---
po/ko.po | 536 ++++++++++++++++++++-----------------------------------
1 file changed, 189 insertions(+), 347 deletions(-)
diff --git a/po/ko.po b/po/ko.po
index 6beee8a7c15..a8b4f84d583 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -5,7 +5,7 @@ msgstr ""
"Project-Id-Version: Wine\n"
"Report-Msgid-Bugs-To: https://bugs.winehq.org\n"
"POT-Creation-Date: N/A\n"
-"PO-Revision-Date: 2019-11-01 16:21+0900\n"
+"PO-Revision-Date: 2020-12-16 13:14+0900\n"
"Last-Translator: Byeongsik Jeon <bsjeon(a)hanmail.net>\n"
"Language-Team: Korean\n"
"Language: ko\n"
@@ -702,7 +702,7 @@ msgstr "사용자 정의 색상(&C):"
#: dlls/comdlg32/comdlg32.rc:289
msgid "|S&olid"
-msgstr ""
+msgstr "|단색(&O)"
#: dlls/comdlg32/comdlg32.rc:290
msgid "&Red:"
@@ -739,11 +739,9 @@ msgid "&Define Custom Colors >>"
msgstr "사용자 정의 색상 결정(&D) >>"
#: dlls/comdlg32/comdlg32.rc:312
-#, fuzzy
-#| msgid "&No"
msgctxt "Solid"
msgid "&o"
-msgstr "아니요(&N)"
+msgstr "&O"
#: dlls/comdlg32/comdlg32.rc:318 programs/regedit/regedit.rc:275
#: programs/regedit/regedit.rc:285
@@ -978,7 +976,7 @@ msgstr "파일이 없습니다"
#: dlls/comdlg32/comdlg32.rc:41
msgid "The selection contains a non-folder object"
-msgstr "선택 영역에 폴더가 아닌 객체가 들어 있습니다"
+msgstr "선택 영역에 폴더가 아닌 개체가 들어 있습니다"
#: dlls/comdlg32/comdlg32.rc:46
msgid "Up One Level"
@@ -2292,7 +2290,7 @@ msgstr "용도 추가"
#: dlls/cryptui/cryptui.rc:265
msgid ""
"Add the object identifier (OID) for the certificate purpose you wish to add:"
-msgstr "추가하고자 하는 인증서 용도의 객체 식별자(OID) 추가:"
+msgstr "추가하고자 하는 인증서 용도의 개체 식별자(OID) 추가:"
#: dlls/cryptui/cryptui.rc:273 dlls/cryptui/cryptui.rc:69
msgid "Select Certificate Store"
@@ -2726,7 +2724,7 @@ msgid ""
"The file contains objects that do not match the given criteria. Please "
"select another file."
msgstr ""
-"이 파일에 주어진 기준에 맞지 않는 객체가 있습니다. 다른 파일을 선택하십시오."
+"이 파일에 주어진 기준에 맞지 않는 개체가 있습니다. 다른 파일을 선택하십시오."
#: dlls/cryptui/cryptui.rc:73
msgid "File to Import"
@@ -3126,7 +3124,7 @@ msgstr "행동"
#: dlls/dinput/dinput.rc:29
msgid "Object"
-msgstr "객체"
+msgstr "개체"
#: dlls/dxdiagn/dxdiagn.rc:28
msgid "Regional Setting"
@@ -3723,11 +3721,11 @@ msgstr "게임 컨트롤러"
#: dlls/joy.cpl/joy.rc:32
msgid "Test and configure game controllers."
-msgstr ""
+msgstr "게임 컨트롤러를 테스트하고 구성합니다."
#: dlls/jscript/jscript.rc:28
msgid "Error converting object to primitive type"
-msgstr "객체를 기본 형식으로 변환하는 중에 오류 발생"
+msgstr "개체를 기본 형식으로 변환하는 중에 오류 발생"
#: dlls/jscript/jscript.rc:29 dlls/vbscript/vbscript.rc:29
msgid "Invalid procedure call or argument"
@@ -3738,26 +3736,24 @@ msgid "Subscript out of range"
msgstr "첨자가 범위를 벗어남"
#: dlls/jscript/jscript.rc:31
-#, fuzzy
-#| msgid "Out of paper; "
msgid "Out of stack space"
-msgstr "종이 초과; "
+msgstr "스택 공간이 부족함"
#: dlls/jscript/jscript.rc:32
msgid "Object required"
-msgstr "객체가 필요함"
+msgstr "개체가 필요함"
#: dlls/jscript/jscript.rc:33
msgid "Automation server can't create object"
-msgstr "자동화 서버가 객체를 만들 수 없음"
+msgstr "자동화 서버가 개체를 만들 수 없음"
#: dlls/jscript/jscript.rc:34 dlls/vbscript/vbscript.rc:49
msgid "Object doesn't support this property or method"
-msgstr "객체는 이 속성이나 메소드를 지원하지 않음"
+msgstr "개체는 이 속성이나 메소드를 지원하지 않음"
#: dlls/jscript/jscript.rc:35 dlls/vbscript/vbscript.rc:50
msgid "Object doesn't support this action"
-msgstr "객체는 이 행동을 지원하지 않음"
+msgstr "개체는 이 행동을 지원하지 않음"
#: dlls/jscript/jscript.rc:36
msgid "Argument not optional"
@@ -3809,11 +3805,11 @@ msgstr "루프 바깥에는 'continue'를 사용할 수 없음"
#: dlls/jscript/jscript.rc:48
msgid "Label redefined"
-msgstr "레이블이 중복정의됨"
+msgstr "레이블이 재정의되었습니다"
#: dlls/jscript/jscript.rc:49
msgid "Label not found"
-msgstr "레이블을 찾을 수 없음"
+msgstr "레이블을 찾을 수 없습니다"
#: dlls/jscript/jscript.rc:50
msgid "Expected '@end'"
@@ -3821,7 +3817,7 @@ msgstr "'@end'가 필요합니다"
#: dlls/jscript/jscript.rc:51
msgid "Conditional compilation is turned off"
-msgstr "조건부 컴파일이 해제되어 있음"
+msgstr "조건부 컴파일이 해제되었습니다"
#: dlls/jscript/jscript.rc:52
msgid "Expected '@'"
@@ -3829,17 +3825,15 @@ msgstr "'@'가 필요합니다"
#: dlls/jscript/jscript.rc:78
msgid "Microsoft JScript compilation error"
-msgstr ""
+msgstr "Microsoft JScript 컴파일 오류"
#: dlls/jscript/jscript.rc:79
msgid "Microsoft JScript runtime error"
-msgstr ""
+msgstr "Microsoft JScript 런타임 오류"
#: dlls/jscript/jscript.rc:80 dlls/vbscript/vbscript.rc:64
-#, fuzzy
-#| msgid "Unknown error"
msgid "Unknown runtime error"
-msgstr "알 수 없는 오류"
+msgstr "알 수 없는 런타임 오류"
#: dlls/jscript/jscript.rc:55
msgid "Number expected"
@@ -3851,11 +3845,11 @@ msgstr "함수가 필요합니다"
#: dlls/jscript/jscript.rc:54
msgid "'[object]' is not a date object"
-msgstr "'[object]'가 날짜 객체가 아닙니다"
+msgstr "'[object]'은(는) 날짜 개체가 아닙니다"
#: dlls/jscript/jscript.rc:56
msgid "Object expected"
-msgstr "객체가 필요합니다"
+msgstr "개체가 필요합니다"
#: dlls/jscript/jscript.rc:57
msgid "Illegal assignment"
@@ -3863,43 +3857,39 @@ msgstr "잘못된 할당"
#: dlls/jscript/jscript.rc:58
msgid "'|' is undefined"
-msgstr "'|'가 정의도지 않았습니다"
+msgstr "'|'이(가) 정의되지 않았습니다"
#: dlls/jscript/jscript.rc:59
msgid "Boolean object expected"
-msgstr "볼린 객제가 필요함"
+msgstr "Boolean 개체가 필요합니다"
#: dlls/jscript/jscript.rc:60
msgid "Cannot delete '|'"
-msgstr "'|'를 지울 수 없음"
+msgstr "'|'을(를) 삭제할 수 없습니다"
#: dlls/jscript/jscript.rc:61
msgid "VBArray object expected"
-msgstr "VBArray 갹체가 필요함"
+msgstr "VBArray 개체가 필요합니다"
#: dlls/jscript/jscript.rc:62
msgid "JScript object expected"
-msgstr "JScript 객체가 필요함"
+msgstr "JScript 개체가 필요합니다"
#: dlls/jscript/jscript.rc:63
-#, fuzzy
-#| msgid "Array object expected"
msgid "Enumerator object expected"
-msgstr "배열 객체가 필요합니다"
+msgstr "열거형 개체가 필요합니다"
#: dlls/jscript/jscript.rc:64
-#, fuzzy
-#| msgid "Boolean object expected"
msgid "Regular Expression object expected"
-msgstr "볼린 객제가 필요함"
+msgstr "정규식 개체가 필요합니다"
#: dlls/jscript/jscript.rc:65
msgid "Syntax error in regular expression"
-msgstr "정규 표현식에 문법오류가 있음"
+msgstr "정규식에 구문 오류가 있습니다"
#: dlls/jscript/jscript.rc:66
msgid "Exception thrown and not caught"
-msgstr ""
+msgstr "예외가 발생했지만 catch할 수 없습니다"
#: dlls/jscript/jscript.rc:68
msgid "URI to be encoded contains invalid characters"
@@ -3907,7 +3897,7 @@ msgstr "인코딩할 URI에 올바르지 않은 문자가 들어 있습니다"
#: dlls/jscript/jscript.rc:67
msgid "URI to be decoded is incorrect"
-msgstr "디코딩할 URI가 올바르지 않습니다"
+msgstr "디코딩할 URI가 잘못되었습니다"
#: dlls/jscript/jscript.rc:69
msgid "Number of fraction digits is out of range"
@@ -3919,11 +3909,11 @@ msgstr "정밀도가 범위를 벗어났습니다"
#: dlls/jscript/jscript.rc:71
msgid "Array length must be a finite positive integer"
-msgstr "배열 길이는 유한한 양의 정수이어야 합니다"
+msgstr "배열의 길이는 유한한 양의 정수이어야 합니다"
#: dlls/jscript/jscript.rc:72
msgid "Array object expected"
-msgstr "배열 객체가 필요합니다"
+msgstr "배열 개체가 필요합니다"
#: dlls/jscript/jscript.rc:73
msgid ""
@@ -3934,15 +3924,15 @@ msgstr ""
#: dlls/jscript/jscript.rc:74
msgid "Cannot redefine non-configurable property '|'"
-msgstr "구성되지 않은 요소 '|'를 재처리할 수 없습니다"
+msgstr "구성 가능하지 않은 속성 '|'을(를) 재정의할 수 없습니다"
#: dlls/jscript/jscript.rc:75
msgid "Cannot modify non-writable property '|'"
-msgstr "쓰기 가능하지 않은 요소 '|'를 편집할 수 없습니다"
+msgstr "쓰기 가능하지 않은 속성 '|'을(를) 수정할 수 없습니다"
#: dlls/jscript/jscript.rc:76
msgid "Property cannot have both accessors and a value"
-msgstr "속성은 접근자와 값을 모두 가질 수 없습니다"
+msgstr "속성에 접근자와 값을 둘 다 지정할 수는 없습니다"
#: include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL"
@@ -5975,7 +5965,7 @@ msgstr "목록상자에는 탭정지가 없음.\n"
#: dlls/kernel32/winerror.mc:2573
msgid "Can't destroy object owned by another thread.\n"
-msgstr "다른 스레드가 소유한 객체를 파괴할 수 없다.\n"
+msgstr "다른 스레드가 소유한 개체를 파괴할 수 없다.\n"
#: dlls/kernel32/winerror.mc:2578
msgid "Child window menus not allowed.\n"
@@ -6303,7 +6293,7 @@ msgstr "올바르지 않은 시간 초과 값.\n"
#: dlls/kernel32/winerror.mc:2983
msgid "Object UUID not found.\n"
-msgstr "UUID 객체를 찾을 수 없습니다.\n"
+msgstr "UUID 개체를 찾을 수 없습니다.\n"
#: dlls/kernel32/winerror.mc:2988
msgid "UUID already registered.\n"
@@ -6479,7 +6469,7 @@ msgstr "더 이상 회원은 없습니다.\n"
#: dlls/kernel32/winerror.mc:3208
msgid "Not all objects unexported.\n"
-msgstr "모든 객체가 내보내지지 못했습니다.\n"
+msgstr "모든 개체가 내보내지지 못했습니다.\n"
#: dlls/kernel32/winerror.mc:3213
msgid "Interface not found.\n"
@@ -6763,7 +6753,7 @@ msgstr "잘못된 스텁 버전.\n"
#: dlls/kernel32/winerror.mc:3563
msgid "Invalid pipe object.\n"
-msgstr "올바르지 않은 파이프 객체.\n"
+msgstr "올바르지 않은 파이프 개체.\n"
#: dlls/kernel32/winerror.mc:3568
msgid "Wrong pipe order.\n"
@@ -6783,7 +6773,7 @@ msgstr "엔드포인트 매퍼 DB를 만들 수 없습니다.\n"
#: dlls/kernel32/winerror.mc:3588
msgid "Invalid object.\n"
-msgstr "올바르지 않은 객체.\n"
+msgstr "올바르지 않은 개체.\n"
#: dlls/kernel32/winerror.mc:3593
msgid "Invalid time.\n"
@@ -6831,7 +6821,7 @@ msgstr "올바르지 않은 드라이버.\n"
#: dlls/kernel32/winerror.mc:3648
msgid "Invalid object resolver set.\n"
-msgstr "잘못된 객체 확인자 세트.\n"
+msgstr "잘못된 개체 확인자 세트.\n"
#: dlls/kernel32/winerror.mc:3653
msgid "Incomplete RPC send.\n"
@@ -6914,49 +6904,41 @@ msgid "Connection reset by peer.\n"
msgstr "피어가 연결을 초기화 했습니다.\n"
#: dlls/kernel32/winerror.mc:3767
-#, fuzzy
-#| msgid "Not implemented"
msgid "Not implemented.\n"
-msgstr "구현되지 않음"
+msgstr "구현되지 않았습니다.\n"
#: dlls/kernel32/winerror.mc:3788
-#, fuzzy
-#| msgid "RPC call failed.\n"
msgid "Call failed.\n"
-msgstr "RPC 호출 실패.\n"
+msgstr "호출이 실패했습니다.\n"
#: dlls/kernel32/winerror.mc:3760
msgid "No Signature found in file.\n"
-msgstr "서명 또는 인증서를 찾을 수 없습니다.\n"
+msgstr "파일에서 서명을 찾을 수 없습니다.\n"
#: dlls/kernel32/winerror.mc:3774
-#, fuzzy
-#| msgid "Invalid level.\n"
msgid "Invalid call.\n"
-msgstr "올바르지 않은 레벨.\n"
+msgstr "올바르지 않은 호출입니다.\n"
#: dlls/kernel32/winerror.mc:3781
-#, fuzzy
-#| msgid "Value is not available.\n"
msgid "Resource is not currently available.\n"
-msgstr "값을 사용할 수 없습니다.\n"
+msgstr "지금은 리소스를 사용할 수 없습니다.\n"
#: dlls/localspl/localspl.rc:31 dlls/localui/localui.rc:31
#: dlls/winspool.drv/winspool.rc:30
msgid "Local Port"
-msgstr "지역 포트"
+msgstr "로컬 포트"
#: dlls/localspl/localspl.rc:32
msgid "Local Monitor"
-msgstr "지역 모니터"
+msgstr "로컬 모니터"
#: dlls/localui/localui.rc:39
msgid "Add a Local Port"
-msgstr "지역 포트 더하기"
+msgstr "로컬 포트 추가"
#: dlls/localui/localui.rc:42
msgid "&Enter the port name to add:"
-msgstr "더할 포트 이름 입력(&E):"
+msgstr "추가할 포트 이름 입력(&E):"
#: dlls/localui/localui.rc:51
msgid "Configure LPT Port"
@@ -6964,11 +6946,11 @@ msgstr "LPT 포트 설정"
#: dlls/localui/localui.rc:54
msgid "Timeout (seconds)"
-msgstr "시간초과(초)"
+msgstr "시간 제한(초)"
#: dlls/localui/localui.rc:55
msgid "&Transmission Retry:"
-msgstr "재 전송 횟수(&T):"
+msgstr "전송 재시도(&T):"
#: dlls/localui/localui.rc:32
msgid "'%s' is not a valid port name"
@@ -6999,10 +6981,8 @@ msgid "Sink has not been finalized.\n"
msgstr "싱크가 완료되지 않았습니다.\n"
#: dlls/mferror/mferror.mc:732
-#, fuzzy
-#| msgid "Sink was already stopped.\n"
msgid "Clock was stopped\n"
-msgstr "싱크가 이미 중지되었습니다.\n"
+msgstr "시계가 중지되었습니다.\n"
#: dlls/mferror/mferror.mc:32
msgid "Media Foundation platform is not initialized.\n"
@@ -7030,7 +7010,7 @@ msgstr "더 이상 입력이 허용되지 않습니다.\n"
#: dlls/mferror/mferror.mc:74
msgid "Object is not initialized.\n"
-msgstr "객체가 초기화되지 않았습니다.\n"
+msgstr "개체가 초기화되지 않았습니다.\n"
#: dlls/mferror/mferror.mc:81
msgid "Representation is not supported.\n"
@@ -7110,7 +7090,7 @@ msgstr "비율(rate) 변경이 선점되었습니다.\n"
#: dlls/mferror/mferror.mc:228
msgid "Object or value wasn't found.\n"
-msgstr "객체 또는 값을 찾을 수 없습니다.\n"
+msgstr "개체 또는 값을 찾을 수 없습니다.\n"
#: dlls/mferror/mferror.mc:235
msgid "Value is not available.\n"
@@ -7381,10 +7361,8 @@ msgid "Clock state was already set.\n"
msgstr "시계 상태가 이미 설정되었습니다.\n"
#: dlls/mferror/mferror.mc:725
-#, fuzzy
-#| msgid "Clock is not available.\n"
msgid "Clock is not simple\n"
-msgstr "시계를 사용할 수 없습니다.\n"
+msgstr "시계가 단순하지 않습니다.\n"
#: dlls/mpr/mpr.rc:35 dlls/wininet/wininet.rc:48
msgid "Enter Network Password"
@@ -8043,7 +8021,7 @@ msgstr "Wine 비디오 1 비디오 코덱"
#: dlls/oleacc/oleacc.rc:31
msgid "unknown object"
-msgstr "알 수 없는 객체"
+msgstr "알 수 없는 개체"
#: dlls/oleacc/oleacc.rc:32
msgid "title bar"
@@ -8478,214 +8456,168 @@ msgid "Off"
msgstr "비작동"
#: dlls/oledb32/version.rc:56
-#, fuzzy
-#| msgid "video"
msgid "Provider"
-msgstr "비디오"
+msgstr "공급자"
#: dlls/oledb32/version.rc:59
-#, fuzzy
-#| msgid "Select the format you want to use:"
msgid "Select the data you want to connect to:"
-msgstr "사용할 파일 형식 선택:"
+msgstr "연결할 데이터 선택:"
#: dlls/oledb32/version.rc:66
-#, fuzzy
-#| msgid "Connections"
msgid "Connection"
msgstr "연결"
#: dlls/oledb32/version.rc:69
-#, fuzzy
-#| msgid "Select the format you want to use:"
msgid "Specify the following to connect to ODBC data:"
-msgstr "사용할 파일 형식 선택:"
+msgstr "ODBC 데이터에 연결하려면 다음을 지정합니다:"
#: dlls/oledb32/version.rc:70
msgid "1. Specify the source of data:"
-msgstr ""
+msgstr "1. 데이터 원본을 지정합니다:"
#: dlls/oledb32/version.rc:71
-#, fuzzy
-#| msgid "Please enter your name"
msgid "Use &data source name"
-msgstr "이름을 입력해 주세요"
+msgstr "데이터 원본 이름 사용(&D)"
#: dlls/oledb32/version.rc:74
-#, fuzzy
-#| msgid "Reset Connections"
msgid "Use c&onnection string"
-msgstr "연결 재설정"
+msgstr "연결 문자열 사용(&O)"
#: dlls/oledb32/version.rc:75
-#, fuzzy
-#| msgid "Connections"
msgid "&Connection string:"
-msgstr "연결"
+msgstr "연결 문자열(&C):"
#: dlls/oledb32/version.rc:77
-#, fuzzy
-#| msgid "A&dd..."
msgid "B&uild..."
-msgstr "추가(&D)..."
+msgstr "빌드(&U)..."
#: dlls/oledb32/version.rc:78
msgid "2. Enter information to log on to the server"
-msgstr ""
+msgstr "2. 서버에 로그온할 정보를 입력합니다"
#: dlls/oledb32/version.rc:79
-#, fuzzy
-#| msgid "&User name:"
msgid "User &name:"
-msgstr "사용자 이름(&U):"
+msgstr "사용자 이름(&N):"
#: dlls/oledb32/version.rc:83
-#, fuzzy
-#| msgid "&Blank page"
msgid "&Blank password"
-msgstr "빈 페이지(&B)"
+msgstr "빈 암호(&B)"
#: dlls/oledb32/version.rc:84
-#, fuzzy
-#| msgid "Wrong password.\n"
msgid "Allow &saving password"
-msgstr "잘못된 암호.\n"
+msgstr "암호 저장 허용(&S)"
#: dlls/oledb32/version.rc:85
msgid "3. Enter the &initial catalog to use:"
-msgstr ""
+msgstr "3. 사용할 초기 카탈로그를 입력합니다(&I):"
#: dlls/oledb32/version.rc:87
-#, fuzzy
-#| msgid "Reset Connections"
msgid "&Test Connection"
-msgstr "연결 재설정"
+msgstr "테스트 연결(&T)"
#: dlls/oledb32/version.rc:92
msgid "Advanced"
-msgstr "중급자"
+msgstr "고급"
#: dlls/oledb32/version.rc:95
-#, fuzzy
-#| msgid "Network share"
msgid "Network settings"
-msgstr "네트워크 공유"
+msgstr "네트워크 설정"
#: dlls/oledb32/version.rc:96
-#, fuzzy
-#| msgid "Bad impersonation level.\n"
msgid "&Impersonation level:"
-msgstr "나쁜 가장 수준.\n"
+msgstr "개인화 수준(&I):"
#: dlls/oledb32/version.rc:98
msgid "P&rotection level:"
-msgstr ""
+msgstr "보호 수준(&R):"
#: dlls/oledb32/version.rc:101
-#, fuzzy
-#| msgid "Connected"
msgid "Connect:"
-msgstr "연결됨"
+msgstr "연결:"
#: dlls/oledb32/version.rc:103
-#, fuzzy
-#| msgid "seconds"
msgid "seconds."
-msgstr "초"
+msgstr "초."
#: dlls/oledb32/version.rc:104
-#, fuzzy
-#| msgid "Success"
msgid "A&ccess:"
-msgstr "성공"
+msgstr "접근(&C):"
#: dlls/oledb32/version.rc:110
-#, fuzzy
-#| msgid "&All"
msgid "All"
-msgstr "모두(&A)"
+msgstr "모두"
#: dlls/oledb32/version.rc:114
msgid ""
"These are the initialization properties for this type of data. To edit a "
"value, select a property, then choose Edit Value below."
msgstr ""
+"이러한 유형의 데이터에 대한 초기화 속성입니다. 값을 편집하려면 속성을 선택한 "
+"다음 아래의 값 편집을 선택합니다."
#: dlls/oledb32/version.rc:115
-#, fuzzy
-#| msgid "&Edit..."
msgid "&Edit Value..."
-msgstr "편집(&E)..."
+msgstr "값 편집(&E)..."
#: dlls/oledb32/version.rc:49
-#, fuzzy
-#| msgid "Properties"
msgid "Data Link Error"
-msgstr "속성"
+msgstr "데이터 링크 오류"
#: dlls/oledb32/version.rc:50
-#, fuzzy
-#| msgid "Please select a file."
msgid "Please select a provider."
-msgstr "파일을 선택하십시오."
+msgstr "공급자를 선택하십시오."
#: dlls/oledb32/version.rc:51
msgid ""
"Provider is no longer available. Ensure that the provider is installed "
"properly."
msgstr ""
+"공급자를 더 이상 사용할 수 없습니다. 공급자가 올바르게 설치되었는지 확인하십"
+"시오."
#: dlls/oledb32/version.rc:36
-#, fuzzy
-#| msgid "Properties"
msgid "Data Link Properties"
-msgstr "속성"
+msgstr "데이터 링크 속성"
#: dlls/oledb32/version.rc:37
msgid "OLE DB Provider(s)"
-msgstr ""
+msgstr "OLE DB 제공자"
#: dlls/oledb32/version.rc:41
-#, fuzzy
-#| msgid "Ready"
msgid "Read"
-msgstr "준비"
+msgstr "읽기"
#: dlls/oledb32/version.rc:42
-#, fuzzy
-#| msgid "Readme:"
msgid "ReadWrite"
-msgstr "주의사항:"
+msgstr "읽기 쓰기"
#: dlls/oledb32/version.rc:43
msgid "Share Deny None"
-msgstr ""
+msgstr "거부 없음을 공유"
#: dlls/oledb32/version.rc:44
msgid "Share Deny Read"
-msgstr ""
+msgstr "읽기 거부를 공유"
#: dlls/oledb32/version.rc:45
msgid "Share Deny Write"
-msgstr ""
+msgstr "쓰기 거부를 공유"
#: dlls/oledb32/version.rc:46
msgid "Share Exclusive"
-msgstr ""
+msgstr "독점적 공유"
#: dlls/oledb32/version.rc:47
-#, fuzzy
-#| msgid "I/O Writes"
msgid "Write"
-msgstr "I/O 쓰기"
+msgstr "쓰기"
#: dlls/oledlg/oledlg.rc:55
msgid "Insert Object"
-msgstr "객체 삽입"
+msgstr "개체 삽입"
#: dlls/oledlg/oledlg.rc:61
msgid "Object Type:"
-msgstr "객체 타입:"
+msgstr "개체 타입:"
#: dlls/oledlg/oledlg.rc:64 dlls/oledlg/oledlg.rc:102
msgid "Result"
@@ -8753,14 +8685,14 @@ msgstr "아이콘 바꾸기(&I)..."
#: dlls/oledlg/oledlg.rc:28
msgid "Insert a new %s object into your document"
-msgstr "새 %s 객체를 문서에 삽입"
+msgstr "새 %s 개체를 문서에 삽입"
#: dlls/oledlg/oledlg.rc:29
msgid ""
"Insert the contents of the file as an object into your document so that you "
"may activate it using the program which created it."
msgstr ""
-"파일 내용을 문서에 객체로 삽입합니다. 파일을 만든 프로그램을 사용하여 활성화"
+"파일 내용을 문서에 개체로 삽입합니다. 파일을 만든 프로그램을 사용하여 활성화"
"합니다."
#: dlls/oledlg/oledlg.rc:30 dlls/shell32/shell32.rc:197
@@ -8784,15 +8716,15 @@ msgstr "변환(&C)..."
#: dlls/oledlg/oledlg.rc:36
msgid "%1 %2 &Object"
-msgstr "%1 %2 객체(&O)"
+msgstr "%1 %2 개체(&O)"
#: dlls/oledlg/oledlg.rc:34
msgid "%1 &Object"
-msgstr "%1 객체(&O)"
+msgstr "%1 개체(&O)"
#: dlls/oledlg/oledlg.rc:33 programs/oleview/oleview.rc:40
msgid "&Object"
-msgstr "객체(&O)"
+msgstr "개체(&O)"
#: dlls/oledlg/oledlg.rc:41
msgid "Inserts the contents of the clipboard into your document as %s."
@@ -8854,7 +8786,7 @@ msgstr "알 수 없는 원본"
#: dlls/oledlg/oledlg.rc:50
msgid "the program which created it"
-msgstr "객체를 만든 프로그램"
+msgstr "개체를 만든 프로그램"
#: dlls/sane.ds/sane.rc:41
msgid "Scanning"
@@ -9228,7 +9160,7 @@ msgstr "Wine 인터넷 익스폴로어"
#: dlls/shdoclc/shdoclc.rc:33
msgid "&w&bPage &p"
-msgstr "&w&b페이지 &p"
+msgstr "&w&b&p쪽"
#: dlls/shell32/shell32.rc:30 dlls/shell32/shell32.rc:45
#: dlls/shell32/shell32.rc:122 dlls/shell32/shell32.rc:162
@@ -9906,16 +9838,12 @@ msgid "Cape Verde Daylight Time"
msgstr "카보베르데 일광 절약 시간"
#: dlls/tzres/tzres.rc:126
-#, fuzzy
-#| msgid "Hawaiian Standard Time"
msgid "Haiti Standard Time"
-msgstr "하와이 표준 시간"
+msgstr "아이티 표준 시간"
#: dlls/tzres/tzres.rc:127
-#, fuzzy
-#| msgid "Hawaiian Daylight Time"
msgid "Haiti Daylight Time"
-msgstr "하와이 일광 절약 시간"
+msgstr "아이티 일광 절약 시간"
#: dlls/tzres/tzres.rc:80
msgid "Central European Standard Time"
@@ -9950,16 +9878,12 @@ msgid "Iran Daylight Time"
msgstr "이란 일광 절약 시간"
#: dlls/tzres/tzres.rc:204
-#, fuzzy
-#| msgid "Hawaiian Standard Time"
msgid "Saint Pierre Standard Time"
-msgstr "하와이 표준 시간"
+msgstr "생피에르 표준 시간"
#: dlls/tzres/tzres.rc:205
-#, fuzzy
-#| msgid "Hawaiian Daylight Time"
msgid "Saint Pierre Daylight Time"
-msgstr "하와이 일광 절약 시간"
+msgstr "생피에르 일광 절약 시간"
#: dlls/tzres/tzres.rc:170
msgid "Namibia Standard Time"
@@ -10002,16 +9926,12 @@ msgid "Central Asia Daylight Time"
msgstr "중앙 아시아 일광 절약 시간"
#: dlls/tzres/tzres.rc:146
-#, fuzzy
-#| msgid "Korea Standard Time"
msgid "Lord Howe Standard Time"
-msgstr "대한민국 표준 시간"
+msgstr "로드하우 표준 시간"
#: dlls/tzres/tzres.rc:147
-#, fuzzy
-#| msgid "Korea Daylight Time"
msgid "Lord Howe Daylight Time"
-msgstr "대한민국 일광 절약 시간"
+msgstr "로드하우 일광 절약 시간"
#: dlls/tzres/tzres.rc:40
msgid "Arabic Standard Time"
@@ -10062,16 +9982,12 @@ msgid "Azerbaijan Daylight Time"
msgstr "아제르바이잔 일광 절약 시간"
#: dlls/tzres/tzres.rc:150
-#, fuzzy
-#| msgid "Magadan Standard Time"
msgid "Magallanes Standard Time"
-msgstr "마가단 표준 시간"
+msgstr "마갈란스 표준 시간"
#: dlls/tzres/tzres.rc:151
-#, fuzzy
-#| msgid "Magadan Daylight Time"
msgid "Magallanes Daylight Time"
-msgstr "마가단 일광 절약 시간"
+msgstr "마갈란스 일광 절약 시간"
#: dlls/tzres/tzres.rc:206
msgid "Samoa Standard Time"
@@ -10122,16 +10038,12 @@ msgid "Line Islands Daylight Time"
msgstr "라인 제도 일광 절약 시간"
#: dlls/tzres/tzres.rc:92
-#, fuzzy
-#| msgid "China Standard Time"
msgid "Cuba Standard Time"
-msgstr "중국 표준 시간"
+msgstr "쿠바 표준 시간"
#: dlls/tzres/tzres.rc:93
-#, fuzzy
-#| msgid "China Daylight Time"
msgid "Cuba Daylight Time"
-msgstr "중국 일광 절약 시간"
+msgstr "쿠바 일광 절약 시간"
#: dlls/tzres/tzres.rc:136
msgid "Jordan Standard Time"
@@ -10174,16 +10086,12 @@ msgid "Argentina Daylight Time"
msgstr "아르헨티나 일광 절약 시간"
#: dlls/tzres/tzres.rc:152
-#, fuzzy
-#| msgid "Mauritius Standard Time"
msgid "Marquesas Standard Time"
-msgstr "모리셔스 표준 시간"
+msgstr "마키저스 표준 시간"
#: dlls/tzres/tzres.rc:153
-#, fuzzy
-#| msgid "Mauritius Daylight Time"
msgid "Marquesas Daylight Time"
-msgstr "모리셔스 일광 절약 시간"
+msgstr "마키저스 일광 절약 시간"
#: dlls/tzres/tzres.rc:166
msgid "Myanmar Standard Time"
@@ -10334,16 +10242,12 @@ msgid "US Eastern Daylight Time"
msgstr "미국 동부 일광 절약 시간"
#: dlls/tzres/tzres.rc:182
-#, fuzzy
-#| msgid "Korea Standard Time"
msgid "North Korea Standard Time"
-msgstr "대한민국 표준 시간"
+msgstr "북한 표준 시간"
#: dlls/tzres/tzres.rc:183
-#, fuzzy
-#| msgid "Korea Daylight Time"
msgid "North Korea Daylight Time"
-msgstr "대한민국 일광 절약 시간"
+msgstr "북한 일광 절약 시간"
#: dlls/tzres/tzres.rc:220
msgid "Tasmania Standard Time"
@@ -10434,16 +10338,12 @@ msgid "Arabian Daylight Time"
msgstr "아라비아 일광 절약 시간"
#: dlls/tzres/tzres.rc:222
-#, fuzzy
-#| msgid "Mountain Standard Time"
msgid "Tocantins Standard Time"
-msgstr "산지 표준 시간"
+msgstr "토칸칭스 표준 시간"
#: dlls/tzres/tzres.rc:223
-#, fuzzy
-#| msgid "Mountain Daylight Time"
msgid "Tocantins Daylight Time"
-msgstr "산지 일광 절약 시간"
+msgstr "토칸칭스 일광 절약 시간"
#: dlls/tzres/tzres.rc:196
msgid "Russian Standard Time"
@@ -10454,14 +10354,10 @@ msgid "Russian Daylight Time"
msgstr "러시아 일광 절약 시간"
#: dlls/tzres/tzres.rc:48
-#, fuzzy
-#| msgid "AUS Central Standard Time"
msgid "Aus Central W. Standard Time"
msgstr "오스트레일리아 중부 표준 시간"
#: dlls/tzres/tzres.rc:49
-#, fuzzy
-#| msgid "AUS Central Daylight Time"
msgid "Aus Central W. Daylight Time"
msgstr "오스트레일리아 중부 일광 절약 시간"
@@ -10594,16 +10490,12 @@ msgid "Venezuela Daylight Time"
msgstr "베네수엘라 일광 절약 시간"
#: dlls/tzres/tzres.rc:62
-#, fuzzy
-#| msgid "Mountain Standard Time"
msgid "Bougainville Standard Time"
-msgstr "산지 표준 시간"
+msgstr "부건빌 표준 시간"
#: dlls/tzres/tzres.rc:63
-#, fuzzy
-#| msgid "Mountain Daylight Time"
msgid "Bougainville Daylight Time"
-msgstr "산지 일광 절약 시간"
+msgstr "부건빌 일광 절약 시간"
#: dlls/tzres/tzres.rc:128
msgid "Hawaiian Standard Time"
@@ -10630,16 +10522,12 @@ msgid "New Zealand Daylight Time"
msgstr "뉴질랜드 일광 절약 시간"
#: dlls/tzres/tzres.rc:34
-#, fuzzy
-#| msgid "Argentina Standard Time"
msgid "Aleutian Standard Time"
-msgstr "아르헨티나 표준 시간"
+msgstr "알류샨 표준 시간"
#: dlls/tzres/tzres.rc:35
-#, fuzzy
-#| msgid "Argentina Daylight Time"
msgid "Aleutian Daylight Time"
-msgstr "아르헨티나 일광 절약 시간"
+msgstr "알류샨 일광 절약 시간"
#: dlls/tzres/tzres.rc:76
msgid "Central Brazilian Standard Time"
@@ -10690,16 +10578,12 @@ msgid "Egypt Daylight Time"
msgstr "이집트 일광 절약 시간"
#: dlls/tzres/tzres.rc:106
-#, fuzzy
-#| msgid "Central Standard Time (Mexico)"
msgid "Eastern Standard Time (Mexico)"
-msgstr "중부 표준 시간 (멕시코)"
+msgstr "동부 표준 시간 (멕시코)"
#: dlls/tzres/tzres.rc:107
-#, fuzzy
-#| msgid "Central Daylight Time (Mexico)"
msgid "Eastern Daylight Time (Mexico)"
-msgstr "중부 일광 절약 시간 (멕시코)"
+msgstr "동부 일광 절약 시간 (멕시코)"
#: dlls/tzres/tzres.rc:154
msgid "Mauritius Standard Time"
@@ -10734,16 +10618,12 @@ msgid "Korea Daylight Time"
msgstr "대한민국 일광 절약 시간"
#: dlls/tzres/tzres.rc:88
-#, fuzzy
-#| msgid "Easter Island Standard Time"
msgid "Chatham Islands Standard Time"
-msgstr "이스터 섬 표준 시간"
+msgstr "채텀 섬 표준 시간"
#: dlls/tzres/tzres.rc:89
-#, fuzzy
-#| msgid "Easter Island Daylight Time"
msgid "Chatham Islands Daylight Time"
-msgstr "이스터 섬 일광 절약 시간"
+msgstr "채텀 섬 일광 절약 시간"
#: dlls/tzres/tzres.rc:96
msgid "E. Africa Standard Time"
@@ -10908,149 +10788,115 @@ msgstr "더 많은 창(&M)..."
#: dlls/vbscript/vbscript.rc:30
msgid "Overflow"
-msgstr ""
+msgstr "오버플로"
#: dlls/vbscript/vbscript.rc:31
-#, fuzzy
-#| msgid "Out of memory."
msgid "Out of memory"
-msgstr "메모리 부족."
+msgstr "메모리 부족"
#: dlls/vbscript/vbscript.rc:33
msgid "This array is fixed or temporarily locked"
-msgstr ""
+msgstr "이 배열은 고정되었거나 일시적으로 잠금 상태입니다"
#: dlls/vbscript/vbscript.rc:34
-#, fuzzy
-#| msgid "Data type mismatch.\n"
msgid "Type mismatch"
-msgstr "데이터 형식이 맞지 않습니다.\n"
+msgstr "형식 불일치"
#: dlls/vbscript/vbscript.rc:36
-#, fuzzy
-#| msgid "I/O device error.\n"
msgid "Device I/O error"
-msgstr "I/O 장치 오류.\n"
+msgstr "장치 I/O 오류"
#: dlls/vbscript/vbscript.rc:37
-#, fuzzy
-#| msgid "File already exists.\n"
msgid "File already exists"
-msgstr "파일이 이미 존재합니다.\n"
+msgstr "파일이 이미 있습니다"
#: dlls/vbscript/vbscript.rc:38
-#, fuzzy
-#| msgid "Disk full.\n"
msgid "Disk full"
-msgstr "디스크가 차 있습니다.\n"
+msgstr "디스크가 가득 찼습니다"
#: dlls/vbscript/vbscript.rc:39
-#, fuzzy
-#| msgid "Too many open files.\n"
msgid "Too many files"
-msgstr "너무 많은 파일 오픈.\n"
+msgstr "파일이 너무 많습니다"
#: dlls/vbscript/vbscript.rc:40
-#, fuzzy
-#| msgid "Access denied.\n"
msgid "Permission denied"
-msgstr "접근 거부.\n"
+msgstr "허가가 거부되었습니다"
#: dlls/vbscript/vbscript.rc:41
msgid "Path/File access error"
-msgstr ""
+msgstr "경로/파일 접근 오류"
#: dlls/vbscript/vbscript.rc:42
-#, fuzzy
-#| msgid "Path not found.\n"
msgid "Path not found"
-msgstr "경로를 찾을 수 없습니다.\n"
+msgstr "경로를 찾을 수 없습니다"
#: dlls/vbscript/vbscript.rc:43
-#, fuzzy
-#| msgid "(value not set)"
msgid "Object variable not set"
-msgstr "(값이 설정되지 않음)"
+msgstr "개체 변수가 설정되어 있지 않습니다"
#: dlls/vbscript/vbscript.rc:44
-#, fuzzy
-#| msgid "Invalid user buffer.\n"
msgid "Invalid use of Null"
-msgstr "올바르지 않은 사용자 버퍼.\n"
+msgstr "올바르지 않은 널 사용"
#: dlls/vbscript/vbscript.rc:45
msgid "Can't create necessary temporary file"
-msgstr ""
+msgstr "필요한 임시 파일을 만들 수 없습니다"
#: dlls/vbscript/vbscript.rc:46
-#, fuzzy
-#| msgid "Automation server can't create object"
msgid "ActiveX component can't create object"
-msgstr "자동화 서버가 객체를 만들 수 없음"
+msgstr "ActiveX 구성 요소는 개체를 만들 수 없습니다"
#: dlls/vbscript/vbscript.rc:47
-#, fuzzy
-#| msgid "Object doesn't support this action"
msgid "Class doesn't support Automation"
-msgstr "객체는 이 행동을 지원하지 않음"
+msgstr "클래스는 자동화를 지원하지 않습니다"
#: dlls/vbscript/vbscript.rc:48
msgid "File name or class name not found during Automation operation"
-msgstr ""
+msgstr "자동화 작업 중에 파일 이름 또는 클래스 이름을 찾을 수 없습니다"
#: dlls/vbscript/vbscript.rc:51
-#, fuzzy
-#| msgid "Object doesn't support this action"
msgid "Object doesn't support named arguments"
-msgstr "객체는 이 행동을 지원하지 않음"
+msgstr "개체는 명명된 인수를 지원하지 않습니다"
#: dlls/vbscript/vbscript.rc:52
-#, fuzzy
-#| msgid "Object doesn't support this action"
msgid "Object doesn't support current locale setting"
-msgstr "객체는 이 행동을 지원하지 않음"
+msgstr "개체는 현재 로캘 설정을 지원하지 않습니다"
#: dlls/vbscript/vbscript.rc:53 dlls/vbscript/vbscript.rc:54
-#, fuzzy
-#| msgid "Element not found.\n"
msgid "Named argument not found"
-msgstr "요소를 찾을 수 없습니다.\n"
+msgstr "명명된 인수를 찾을 수 없습니다"
#: dlls/vbscript/vbscript.rc:55
msgid "Wrong number of arguments or invalid property assignment"
-msgstr ""
+msgstr "인수의 개수나 속성 할당이 잘못되었습니다"
#: dlls/vbscript/vbscript.rc:56
-#, fuzzy
-#| msgid "Object Class Violation"
msgid "Object not a collection"
-msgstr "객체 클래스 위반"
+msgstr "컬렉션이 아닌 개체입니다"
#: dlls/vbscript/vbscript.rc:57
-#, fuzzy
-#| msgid "Specified control was not found in message"
msgid "Specified DLL function not found"
-msgstr "지정한 제어는 메시지에서 발견할 수 없습니다"
+msgstr "지정한 DLL 함수를 찾을 수 없습니다"
#: dlls/vbscript/vbscript.rc:58
msgid "Variable uses an Automation type not supported in VBScript"
-msgstr ""
+msgstr "변수에 VBScript에서 지원하지 않는 자동화 형식이 사용되었습니다"
#: dlls/vbscript/vbscript.rc:59
msgid "The remote server machine does not exist or is unavailable"
-msgstr ""
+msgstr "원격 서버가 없거나 사용할 수 없습니다"
#: dlls/vbscript/vbscript.rc:60
msgid "Invalid or unqualified reference"
-msgstr ""
+msgstr "올바르지 않거나 비정규화된 참조"
#: dlls/vbscript/vbscript.rc:62
msgid "Microsoft VBScript compilation error"
-msgstr ""
+msgstr "Microsoft VBScript 컴파일 오류"
#: dlls/vbscript/vbscript.rc:63
msgid "Microsoft VBScript runtime error"
-msgstr ""
+msgstr "Microsoft VBScript 런타임 오류"
#: dlls/winemac.drv/winemac.rc:33
msgid "Hide %@"
@@ -11147,33 +10993,27 @@ msgstr "인증서에 최소한 하나의 알 수 없는 보안 문제가 있습
#: dlls/wininet/wininet.rc:35
msgid "Effective Date"
-msgstr ""
+msgstr "개시 날짜"
#: dlls/wininet/wininet.rc:37
-#, fuzzy
-#| msgid "Security"
msgid "Security Protocol"
-msgstr "보안"
+msgstr "보안 프로토콜"
#: dlls/wininet/wininet.rc:38
-#, fuzzy
-#| msgid "Signature"
msgid "Signature Type"
-msgstr "서명"
+msgstr "서명 유형"
#: dlls/wininet/wininet.rc:39
-#, fuzzy
-#| msgid "Encrypting File System"
msgid "Encryption Type"
-msgstr "파일 시스템 암호화"
+msgstr "암호화 유형"
#: dlls/wininet/wininet.rc:40
msgid "Privacy Strength"
-msgstr ""
+msgstr "보안 수준"
#: dlls/wininet/wininet.rc:43
msgid "bits"
-msgstr ""
+msgstr "bits"
#: dlls/wininet/winineterror.mc:26
msgid "The request has timed out.\n"
@@ -11918,7 +11758,7 @@ msgstr "잘못된 문법"
#: dlls/wldap32/wldap32.rc:64
msgid "No Such Object"
-msgstr "어떤 객체도 없음"
+msgstr "어떤 개체도 없음"
#: dlls/wldap32/wldap32.rc:65
msgid "Alias Problem"
@@ -11978,7 +11818,7 @@ msgstr "명명 위반"
#: dlls/wldap32/wldap32.rc:97
msgid "Object Class Violation"
-msgstr "객체 클래스 위반"
+msgstr "개체 클래스 위반"
#: dlls/wldap32/wldap32.rc:98
msgid "Not allowed on Non-leaf"
@@ -11994,7 +11834,7 @@ msgstr "이미 존재합니다"
#: dlls/wldap32/wldap32.rc:101
msgid "No Object Class Mods"
-msgstr "어떤 객체 클래스 모드도 없숩니다"
+msgstr "어떤 개체 클래스 모드도 없숩니다"
#: dlls/wldap32/wldap32.rc:102
msgid "Results Too Large"
@@ -13176,6 +13016,9 @@ msgid ""
"\n"
"hardlink hardlink management\n"
msgstr ""
+"- 지원되는 명령 -\n"
+"\n"
+"hardlink 하드링크 관리\n"
#: programs/fsutil/fsutil.mc:35
msgid ""
@@ -13183,10 +13026,13 @@ msgid ""
"\n"
"create create a hardlink\n"
msgstr ""
+"- Hardlink - 지원되는 명령 -\n"
+"\n"
+"create 하드링크 만들기\n"
#: programs/fsutil/fsutil.mc:40
msgid "Syntax: fsutil hardlink create <new> <existing>\n"
-msgstr ""
+msgstr "구문: fsutil hardlink create <new> <existing>\n"
#: programs/hostname/hostname.rc:30
msgid "Usage: hostname\n"
@@ -13817,7 +13663,7 @@ msgstr "C&LSID를 클립보드로 복사"
#: programs/oleview/oleview.rc:57
msgid "Copy &HTML object Tag to clipboard"
-msgstr "&HTML 객체 태그를 클립보드로 복사"
+msgstr "&HTML 개체 태그를 클립보드로 복사"
#: programs/oleview/oleview.rc:63
msgid "&Expert mode"
@@ -13930,7 +13776,7 @@ msgstr "ITypeLib 뷰어"
#: programs/oleview/oleview.rc:99
msgid "OleView - OLE/COM Object Viewer"
-msgstr "OleView - OLE/COM 객체 뷰어"
+msgstr "OleView - OLE/COM 개체 뷰어"
#: programs/oleview/oleview.rc:102
msgid "TypeLib files (*.tlb; *.olb; *.dll; *.ocx; *.exe)"
@@ -13958,15 +13804,15 @@ msgstr "바뀐 것을 저장할지 물어보고 프로그램 끝내기"
#: programs/oleview/oleview.rc:110
msgid "Create an instance of the selected object"
-msgstr "선택된 객체의 인스턴트 만들기"
+msgstr "선택된 개체의 인스턴트 만들기"
#: programs/oleview/oleview.rc:111
msgid "Create an instance of the selected object on a specific machine"
-msgstr "지정한 머신의 선택된 객체의 인스턴트 만들기"
+msgstr "지정한 머신의 선택된 개체의 인스턴트 만들기"
#: programs/oleview/oleview.rc:112
msgid "Release the currently selected object instance"
-msgstr "현재 선택된 객체 인스턴트 해제하기"
+msgstr "현재 선택된 개체 인스턴트 해제하기"
#: programs/oleview/oleview.rc:113
msgid "Copy the GUID of the currently selected item to the clipboard"
@@ -14027,15 +13873,15 @@ msgstr "컴포턴트 분류"
#: programs/oleview/oleview.rc:132
msgid "OLE 1.0 Objects"
-msgstr "OLE 1.0 객체"
+msgstr "OLE 1.0 개체"
#: programs/oleview/oleview.rc:133
msgid "COM Library Objects"
-msgstr "COM 라이브러리 객체"
+msgstr "COM 라이브러리 개체"
#: programs/oleview/oleview.rc:134
msgid "All Objects"
-msgstr "모든 객체"
+msgstr "모든 개체"
#: programs/oleview/oleview.rc:135
msgid "Application IDs"
@@ -15625,7 +15471,7 @@ msgstr "페이지 실패(&F)"
#: programs/taskmgr/taskmgr.rc:537
msgid "&USER Objects"
-msgstr "사용자 객체(&U)"
+msgstr "사용자 개체(&U)"
#: programs/taskmgr/taskmgr.rc:539 programs/taskmgr/taskmgr.rc:281
msgid "I/O Reads"
@@ -15673,7 +15519,7 @@ msgstr "스레드 카운트(&T)"
#: programs/taskmgr/taskmgr.rc:561 programs/taskmgr/taskmgr.rc:292
msgid "GDI Objects"
-msgstr "GDI 객체"
+msgstr "GDI 개체"
#: programs/taskmgr/taskmgr.rc:563 programs/taskmgr/taskmgr.rc:293
msgid "I/O Writes"
@@ -15909,7 +15755,7 @@ msgstr "페이지 실패"
#: programs/taskmgr/taskmgr.rc:280
msgid "USER Objects"
-msgstr "사용자 객체"
+msgstr "사용자 개체"
#: programs/taskmgr/taskmgr.rc:283
msgid "Session ID"
@@ -15937,7 +15783,7 @@ msgstr "NP 풀"
#: programs/taskmgr/taskmgr.rc:289
msgid "Base Pri"
-msgstr "기본 Pri"
+msgstr "기본 우선 순위"
#: programs/taskmgr/taskmgr.rc:301
msgid "Task Manager Warning"
@@ -16983,14 +16829,12 @@ msgid "&Beginner"
msgstr "초보자(&B)"
#: programs/winemine/winemine.rc:45
-#, fuzzy
-#| msgid "Interface"
msgid "&Intermediate"
-msgstr "인터페이스"
+msgstr "중급자(&I)"
#: programs/winemine/winemine.rc:46
msgid "&Expert"
-msgstr "상급자(&E)"
+msgstr "전문가(&E)"
#: programs/winemine/winemine.rc:47
msgid "&Custom..."
@@ -17017,10 +16861,8 @@ msgid "Beginner"
msgstr "초보자"
#: programs/winemine/winemine.rc:65
-#, fuzzy
-#| msgid "Interface"
msgid "Intermediate"
-msgstr "인터페이스"
+msgstr "중급자"
#: programs/winemine/winemine.rc:66
msgid "Expert"
--
2.29.2
1
0
[PATCH vkd3d v2 2/2] vkd3d-shader: Move location tracking out of the vkd3d_shader_message_context structure.
by Zebediah Figura 15 Dec '20
by Zebediah Figura 15 Dec '20
15 Dec '20
Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com>
---
v2: Retain source names for shader_extract_from_dxbc().
I still think it's better and easier to get rid of the pointless "<anonymous>"
for signature parsing and compilation, but that functional change can be
reverted as well...
libs/vkd3d-shader/dxbc.c | 63 +++++++++++++-----------
libs/vkd3d-shader/spirv.c | 6 ++-
libs/vkd3d-shader/vkd3d_shader_main.c | 61 ++++++++++++-----------
libs/vkd3d-shader/vkd3d_shader_private.h | 19 ++++---
4 files changed, 83 insertions(+), 66 deletions(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c
index 9977d1a3..278912d8 100644
--- a/libs/vkd3d-shader/dxbc.c
+++ b/libs/vkd3d-shader/dxbc.c
@@ -2021,9 +2021,11 @@ static const char *shader_get_string(const char *data, size_t data_size, DWORD o
return data + offset;
}
-static int parse_dxbc(const char *data, size_t data_size, struct vkd3d_shader_message_context *message_context,
+static int parse_dxbc(const char *data, size_t data_size,
+ struct vkd3d_shader_message_context *message_context, const char *source_name,
int (*chunk_handler)(const char *data, DWORD data_size, DWORD tag, void *ctx), void *ctx)
{
+ const struct vkd3d_shader_location location = {.source_name = source_name};
uint32_t checksum[4], calculated_checksum[4];
const char *ptr = data;
int ret = VKD3D_OK;
@@ -2036,7 +2038,7 @@ static int parse_dxbc(const char *data, size_t data_size, struct vkd3d_shader_me
if (data_size < VKD3D_DXBC_HEADER_SIZE)
{
WARN("Invalid data size %zu.\n", data_size);
- vkd3d_shader_error(message_context, VKD3D_SHADER_ERROR_DXBC_INVALID_SIZE,
+ vkd3d_shader_error(message_context, &location, VKD3D_SHADER_ERROR_DXBC_INVALID_SIZE,
"DXBC size %zu is smaller than the DXBC header size.", data_size);
return VKD3D_ERROR_INVALID_ARGUMENT;
}
@@ -2047,7 +2049,7 @@ static int parse_dxbc(const char *data, size_t data_size, struct vkd3d_shader_me
if (tag != TAG_DXBC)
{
WARN("Wrong tag.\n");
- vkd3d_shader_error(message_context, VKD3D_SHADER_ERROR_DXBC_INVALID_MAGIC, "Invalid DXBC magic.");
+ vkd3d_shader_error(message_context, &location, VKD3D_SHADER_ERROR_DXBC_INVALID_MAGIC, "Invalid DXBC magic.");
return VKD3D_ERROR_INVALID_ARGUMENT;
}
@@ -2063,7 +2065,8 @@ static int parse_dxbc(const char *data, size_t data_size, struct vkd3d_shader_me
checksum[0], checksum[1], checksum[2], checksum[3],
calculated_checksum[0], calculated_checksum[1],
calculated_checksum[2], calculated_checksum[3]);
- vkd3d_shader_error(message_context, VKD3D_SHADER_ERROR_DXBC_INVALID_CHECKSUM, "Invalid DXBC checksum.");
+ vkd3d_shader_error(message_context, &location, VKD3D_SHADER_ERROR_DXBC_INVALID_CHECKSUM,
+ "Invalid DXBC checksum.");
return VKD3D_ERROR_INVALID_ARGUMENT;
}
@@ -2072,7 +2075,7 @@ static int parse_dxbc(const char *data, size_t data_size, struct vkd3d_shader_me
if (version != 0x00000001)
{
WARN("Got unexpected DXBC version %#x.\n", version);
- vkd3d_shader_error(message_context, VKD3D_SHADER_ERROR_DXBC_INVALID_VERSION,
+ vkd3d_shader_error(message_context, &location, VKD3D_SHADER_ERROR_DXBC_INVALID_VERSION,
"DXBC version %#x is not supported.", version);
return VKD3D_ERROR_INVALID_ARGUMENT;
}
@@ -2095,7 +2098,7 @@ static int parse_dxbc(const char *data, size_t data_size, struct vkd3d_shader_me
if (chunk_offset >= data_size || !require_space(chunk_offset, 2, sizeof(DWORD), data_size))
{
WARN("Invalid chunk offset %#x (data size %zu).\n", chunk_offset, data_size);
- vkd3d_shader_error(message_context, VKD3D_SHADER_ERROR_DXBC_INVALID_CHUNK_OFFSET,
+ vkd3d_shader_error(message_context, &location, VKD3D_SHADER_ERROR_DXBC_INVALID_CHUNK_OFFSET,
"DXBC chunk %u has invalid offset %#x (data size %#zx).", i, chunk_offset, data_size);
return VKD3D_ERROR_INVALID_ARGUMENT;
}
@@ -2109,7 +2112,7 @@ static int parse_dxbc(const char *data, size_t data_size, struct vkd3d_shader_me
{
WARN("Invalid chunk size %#x (data size %zu, chunk offset %#x).\n",
chunk_size, data_size, chunk_offset);
- vkd3d_shader_error(message_context, VKD3D_SHADER_ERROR_DXBC_INVALID_CHUNK_SIZE,
+ vkd3d_shader_error(message_context, &location, VKD3D_SHADER_ERROR_DXBC_INVALID_CHUNK_SIZE,
"DXBC chunk %u has invalid size %#x (data size %#zx, chunk offset %#x).",
i, chunk_offset, data_size, chunk_offset);
return VKD3D_ERROR_INVALID_ARGUMENT;
@@ -2229,7 +2232,7 @@ int shader_parse_input_signature(const void *dxbc, size_t dxbc_length,
int ret;
memset(signature, 0, sizeof(*signature));
- if ((ret = parse_dxbc(dxbc, dxbc_length, message_context, isgn_handler, signature)) < 0)
+ if ((ret = parse_dxbc(dxbc, dxbc_length, message_context, NULL, isgn_handler, signature)) < 0)
ERR("Failed to parse input signature.\n");
return ret;
@@ -2304,7 +2307,7 @@ void free_shader_desc(struct vkd3d_shader_desc *desc)
}
int shader_extract_from_dxbc(const void *dxbc, size_t dxbc_length,
- struct vkd3d_shader_message_context *message_context, struct vkd3d_shader_desc *desc)
+ struct vkd3d_shader_message_context *message_context, const char *source_name, struct vkd3d_shader_desc *desc)
{
int ret;
@@ -2314,7 +2317,7 @@ int shader_extract_from_dxbc(const void *dxbc, size_t dxbc_length,
memset(&desc->output_signature, 0, sizeof(desc->output_signature));
memset(&desc->patch_constant_signature, 0, sizeof(desc->patch_constant_signature));
- ret = parse_dxbc(dxbc, dxbc_length, message_context, shdr_handler, desc);
+ ret = parse_dxbc(dxbc, dxbc_length, message_context, source_name, shdr_handler, desc);
if (!desc->byte_code)
ret = VKD3D_ERROR_INVALID_ARGUMENT;
@@ -2781,9 +2784,9 @@ int vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc,
memset(root_signature, 0, sizeof(*root_signature));
if (messages)
*messages = NULL;
- vkd3d_shader_message_context_init(&message_context, VKD3D_SHADER_LOG_INFO, NULL);
+ vkd3d_shader_message_context_init(&message_context, VKD3D_SHADER_LOG_INFO);
- ret = parse_dxbc(dxbc->code, dxbc->size, &message_context, rts0_handler, root_signature);
+ ret = parse_dxbc(dxbc->code, dxbc->size, &message_context, NULL, rts0_handler, root_signature);
vkd3d_shader_message_context_trace_messages(&message_context);
if (!vkd3d_shader_message_context_copy_messages(&message_context, messages))
ret = VKD3D_ERROR_OUT_OF_MEMORY;
@@ -2935,7 +2938,7 @@ static int shader_write_root_signature_header(struct root_signature_writer_conte
return VKD3D_OK;
fail:
- vkd3d_shader_error(&context->message_context, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
+ vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
"Out of memory while writing root signature header.");
return VKD3D_ERROR_OUT_OF_MEMORY;
}
@@ -2963,7 +2966,7 @@ static int shader_write_descriptor_ranges(struct root_signature_writer_context *
return VKD3D_OK;
fail:
- vkd3d_shader_error(&context->message_context, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
+ vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
"Out of memory while writing root signature descriptor ranges.");
return VKD3D_ERROR_OUT_OF_MEMORY;
}
@@ -2993,7 +2996,7 @@ static int shader_write_descriptor_ranges1(struct root_signature_writer_context
return VKD3D_OK;
fail:
- vkd3d_shader_error(&context->message_context, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
+ vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
"Out of memory while writing root signature descriptor ranges.");
return VKD3D_ERROR_OUT_OF_MEMORY;
}
@@ -3009,7 +3012,7 @@ static int shader_write_descriptor_table(struct root_signature_writer_context *c
return shader_write_descriptor_ranges(context, table);
fail:
- vkd3d_shader_error(&context->message_context, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
+ vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
"Out of memory while writing root signature root descriptor table.");
return VKD3D_ERROR_OUT_OF_MEMORY;
}
@@ -3025,7 +3028,7 @@ static int shader_write_descriptor_table1(struct root_signature_writer_context *
return shader_write_descriptor_ranges1(context, table);
fail:
- vkd3d_shader_error(&context->message_context, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
+ vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
"Out of memory while writing root signature root descriptor table.");
return VKD3D_ERROR_OUT_OF_MEMORY;
}
@@ -3043,7 +3046,7 @@ static int shader_write_root_constants(struct root_signature_writer_context *con
return VKD3D_OK;
fail:
- vkd3d_shader_error(&context->message_context, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
+ vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
"Out of memory while writing root signature root constants.");
return VKD3D_ERROR_OUT_OF_MEMORY;
}
@@ -3059,7 +3062,7 @@ static int shader_write_root_descriptor(struct root_signature_writer_context *co
return VKD3D_OK;
fail:
- vkd3d_shader_error(&context->message_context, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
+ vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
"Out of memory while writing root signature root descriptor.");
return VKD3D_ERROR_OUT_OF_MEMORY;
}
@@ -3077,7 +3080,7 @@ static int shader_write_root_descriptor1(struct root_signature_writer_context *c
return VKD3D_OK;
fail:
- vkd3d_shader_error(&context->message_context, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
+ vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
"Out of memory while writing root signature root descriptor.");
return VKD3D_ERROR_OUT_OF_MEMORY;
}
@@ -3126,7 +3129,7 @@ static int shader_write_root_parameters(struct root_signature_writer_context *co
break;
default:
FIXME("Unrecognized type %#x.\n", versioned_root_signature_get_parameter_type(desc, i));
- vkd3d_shader_error(&context->message_context, VKD3D_SHADER_ERROR_RS_INVALID_ROOT_PARAMETER_TYPE,
+ vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_INVALID_ROOT_PARAMETER_TYPE,
"Invalid/unrecognised root signature root parameter type %#x.",
versioned_root_signature_get_parameter_type(desc, i));
return VKD3D_ERROR_INVALID_ARGUMENT;
@@ -3139,7 +3142,7 @@ static int shader_write_root_parameters(struct root_signature_writer_context *co
return VKD3D_OK;
fail:
- vkd3d_shader_error(&context->message_context, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
+ vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
"Out of memory while writing root signature root parameters.");
return VKD3D_ERROR_OUT_OF_MEMORY;
}
@@ -3183,7 +3186,7 @@ static int shader_write_static_samplers(struct root_signature_writer_context *co
return VKD3D_OK;
fail:
- vkd3d_shader_error(&context->message_context, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
+ vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
"Out of memory while writing root signature static samplers.");
return VKD3D_ERROR_OUT_OF_MEMORY;
}
@@ -3218,7 +3221,7 @@ static int shader_write_root_signature(struct root_signature_writer_context *con
return shader_write_static_samplers(context, desc);
fail:
- vkd3d_shader_error(&context->message_context, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
+ vkd3d_shader_error(&context->message_context, NULL, VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY,
"Out of memory while writing root signature.");
return VKD3D_ERROR_OUT_OF_MEMORY;
}
@@ -3247,7 +3250,7 @@ static int validate_descriptor_table_v_1_0(const struct vkd3d_shader_root_descri
else
{
WARN("Invalid descriptor range type %#x.\n", r->range_type);
- vkd3d_shader_error(message_context, VKD3D_SHADER_ERROR_RS_INVALID_DESCRIPTOR_RANGE_TYPE,
+ vkd3d_shader_error(message_context, NULL, VKD3D_SHADER_ERROR_RS_INVALID_DESCRIPTOR_RANGE_TYPE,
"Invalid root signature descriptor range type %#x.", r->range_type);
return VKD3D_ERROR_INVALID_ARGUMENT;
}
@@ -3256,7 +3259,7 @@ static int validate_descriptor_table_v_1_0(const struct vkd3d_shader_root_descri
if (have_srv_uav_cbv && have_sampler)
{
WARN("Samplers cannot be mixed with CBVs/SRVs/UAVs in descriptor tables.\n");
- vkd3d_shader_error(message_context, VKD3D_SHADER_ERROR_RS_MIXED_DESCRIPTOR_RANGE_TYPES,
+ vkd3d_shader_error(message_context, NULL, VKD3D_SHADER_ERROR_RS_MIXED_DESCRIPTOR_RANGE_TYPES,
"Encountered both CBV/SRV/UAV and sampler descriptor ranges in the same root descriptor table.");
return VKD3D_ERROR_INVALID_ARGUMENT;
}
@@ -3288,7 +3291,7 @@ static int validate_descriptor_table_v_1_1(const struct vkd3d_shader_root_descri
else
{
WARN("Invalid descriptor range type %#x.\n", r->range_type);
- vkd3d_shader_error(message_context, VKD3D_SHADER_ERROR_RS_INVALID_DESCRIPTOR_RANGE_TYPE,
+ vkd3d_shader_error(message_context, NULL, VKD3D_SHADER_ERROR_RS_INVALID_DESCRIPTOR_RANGE_TYPE,
"Invalid root signature descriptor range type %#x.", r->range_type);
return VKD3D_ERROR_INVALID_ARGUMENT;
}
@@ -3297,7 +3300,7 @@ static int validate_descriptor_table_v_1_1(const struct vkd3d_shader_root_descri
if (have_srv_uav_cbv && have_sampler)
{
WARN("Samplers cannot be mixed with CBVs/SRVs/UAVs in descriptor tables.\n");
- vkd3d_shader_error(message_context, VKD3D_SHADER_ERROR_RS_MIXED_DESCRIPTOR_RANGE_TYPES,
+ vkd3d_shader_error(message_context, NULL, VKD3D_SHADER_ERROR_RS_MIXED_DESCRIPTOR_RANGE_TYPES,
"Encountered both CBV/SRV/UAV and sampler descriptor ranges in the same root descriptor table.");
return VKD3D_ERROR_INVALID_ARGUMENT;
}
@@ -3345,14 +3348,14 @@ int vkd3d_shader_serialize_root_signature(const struct vkd3d_shader_versioned_ro
*messages = NULL;
memset(&context, 0, sizeof(context));
- vkd3d_shader_message_context_init(&context.message_context, VKD3D_SHADER_LOG_INFO, NULL);
+ vkd3d_shader_message_context_init(&context.message_context, VKD3D_SHADER_LOG_INFO);
if (root_signature->version != VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_0
&& root_signature->version != VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_1)
{
ret = VKD3D_ERROR_INVALID_ARGUMENT;
WARN("Root signature version %#x not supported.\n", root_signature->version);
- vkd3d_shader_error(&context.message_context, VKD3D_SHADER_ERROR_RS_INVALID_VERSION,
+ vkd3d_shader_error(&context.message_context, NULL, VKD3D_SHADER_ERROR_RS_INVALID_VERSION,
"Root signature version %#x is not supported.", root_signature->version);
goto done;
}
diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c
index cb9c7a12..61d0d472 100644
--- a/libs/vkd3d-shader/spirv.c
+++ b/libs/vkd3d-shader/spirv.c
@@ -2155,6 +2155,7 @@ struct vkd3d_dxbc_compiler
struct vkd3d_spirv_builder spirv_builder;
struct vkd3d_shader_message_context *message_context;
+ struct vkd3d_shader_location location;
bool failed;
bool strip_debug;
@@ -2245,6 +2246,8 @@ struct vkd3d_dxbc_compiler *vkd3d_dxbc_compiler_create(const struct vkd3d_shader
memset(compiler, 0, sizeof(*compiler));
compiler->message_context = message_context;
+ compiler->location.source_name = compile_info->source_name;
+ compiler->location.line = 2; /* Line 1 is the version token. */
if ((target_info = vkd3d_find_struct(compile_info->next, SPIRV_TARGET_INFO)))
{
@@ -2452,7 +2455,7 @@ static void VKD3D_PRINTF_FUNC(3, 4) vkd3d_dxbc_compiler_error(struct vkd3d_dxbc_
va_list args;
va_start(args, format);
- vkd3d_shader_verror(compiler->message_context, error, format, args);
+ vkd3d_shader_verror(compiler->message_context, &compiler->location, error, format, args);
va_end(args);
compiler->failed = true;
}
@@ -9194,6 +9197,7 @@ int vkd3d_dxbc_compiler_handle_instruction(struct vkd3d_dxbc_compiler *compiler,
FIXME("Unhandled instruction %#x.\n", instruction->handler_idx);
}
+ ++compiler->location.line;
return ret;
}
diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c
index 2ea233bb..173ff170 100644
--- a/libs/vkd3d-shader/vkd3d_shader_main.c
+++ b/libs/vkd3d-shader/vkd3d_shader_main.c
@@ -108,13 +108,9 @@ void vkd3d_string_buffer_trace_(const struct vkd3d_string_buffer *buffer, const
}
void vkd3d_shader_message_context_init(struct vkd3d_shader_message_context *context,
- enum vkd3d_shader_log_level log_level, const char *source_name)
+ enum vkd3d_shader_log_level log_level)
{
context->log_level = log_level;
- context->source_name = source_name ? source_name : "<anonymous>";
- context->line = 0;
- context->column = 0;
-
vkd3d_string_buffer_init(&context->messages);
}
@@ -148,28 +144,37 @@ bool vkd3d_shader_message_context_copy_messages(struct vkd3d_shader_message_cont
return true;
}
-void vkd3d_shader_verror(struct vkd3d_shader_message_context *context,
+void vkd3d_shader_verror(struct vkd3d_shader_message_context *context, const struct vkd3d_shader_location *location,
enum vkd3d_shader_error error, const char *format, va_list args)
{
if (context->log_level < VKD3D_SHADER_LOG_ERROR)
return;
- if (context->line)
- vkd3d_string_buffer_printf(&context->messages, "%s:%u:%u: E%04u: ",
- context->source_name, context->line, context->column, error);
+ if (location)
+ {
+ const char *source_name = location->source_name ? location->source_name : "<anonymous>";
+
+ if (location->line)
+ vkd3d_string_buffer_printf(&context->messages, "%s:%u:%u: E%04u: ",
+ source_name, location->line, location->column, error);
+ else
+ vkd3d_string_buffer_printf(&context->messages, "%s: E%04u: ", source_name, error);
+ }
else
- vkd3d_string_buffer_printf(&context->messages, "%s: E%04u: ", context->source_name, error);
+ {
+ vkd3d_string_buffer_printf(&context->messages, "E%04u: ", error);
+ }
vkd3d_string_buffer_vprintf(&context->messages, format, args);
vkd3d_string_buffer_printf(&context->messages, "\n");
}
-void vkd3d_shader_error(struct vkd3d_shader_message_context *context,
+void vkd3d_shader_error(struct vkd3d_shader_message_context *context, const struct vkd3d_shader_location *location,
enum vkd3d_shader_error error, const char *format, ...)
{
va_list args;
va_start(args, format);
- vkd3d_shader_verror(context, error, format, args);
+ vkd3d_shader_verror(context, location, error, format, args);
va_end(args);
}
@@ -222,12 +227,13 @@ struct vkd3d_shader_parser
};
static int vkd3d_shader_parser_init(struct vkd3d_shader_parser *parser,
- const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_message_context *message_context)
+ const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_message_context *message_context)
{
struct vkd3d_shader_desc *shader_desc = &parser->shader_desc;
int ret;
- if ((ret = shader_extract_from_dxbc(dxbc->code, dxbc->size, message_context, shader_desc)) < 0)
+ if ((ret = shader_extract_from_dxbc(compile_info->source.code, compile_info->source.size,
+ message_context, compile_info->source_name, shader_desc)) < 0)
{
WARN("Failed to extract shader, vkd3d result %d.\n", ret);
return ret;
@@ -307,6 +313,7 @@ struct vkd3d_shader_scan_context
size_t descriptors_size;
struct vkd3d_shader_message_context *message_context;
+ struct vkd3d_shader_location location;
struct vkd3d_shader_cf_info
{
@@ -332,12 +339,15 @@ struct vkd3d_shader_scan_context
};
static void vkd3d_shader_scan_context_init(struct vkd3d_shader_scan_context *context,
+ const struct vkd3d_shader_compile_info *compile_info,
struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info,
struct vkd3d_shader_message_context *message_context)
{
memset(context, 0, sizeof(*context));
context->scan_descriptor_info = scan_descriptor_info;
context->message_context = message_context;
+ context->location.source_name = compile_info->source_name;
+ context->location.line = 2; /* Line 1 is the version token. */
}
static void vkd3d_shader_scan_context_cleanup(struct vkd3d_shader_scan_context *context)
@@ -606,7 +616,7 @@ static void vkd3d_shader_scan_error(struct vkd3d_shader_scan_context *context,
va_list args;
va_start(args, format);
- vkd3d_shader_verror(context->message_context, error, format, args);
+ vkd3d_shader_verror(context->message_context, &context->location, error, format, args);
va_end(args);
}
@@ -774,6 +784,7 @@ static int vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_context *conte
if (vkd3d_shader_instruction_is_uav_counter(instruction))
vkd3d_shader_scan_record_uav_counter(context, &instruction->src[0].reg);
+ ++context->location.line;
return VKD3D_OK;
}
@@ -792,9 +803,9 @@ static int scan_dxbc(const struct vkd3d_shader_compile_info *compile_info,
scan_descriptor_info->descriptor_count = 0;
}
- vkd3d_shader_scan_context_init(&context, scan_descriptor_info, message_context);
+ vkd3d_shader_scan_context_init(&context, compile_info, scan_descriptor_info, message_context);
- if ((ret = vkd3d_shader_parser_init(&parser, &compile_info->source, message_context)) < 0)
+ if ((ret = vkd3d_shader_parser_init(&parser, compile_info, message_context)) < 0)
{
vkd3d_shader_scan_context_cleanup(&context);
return ret;
@@ -803,8 +814,6 @@ static int scan_dxbc(const struct vkd3d_shader_compile_info *compile_info,
if (TRACE_ON())
vkd3d_shader_trace(parser.data);
- message_context->line = 2; /* Line 1 is the version token. */
- message_context->column = 1;
while (!shader_sm4_is_end(parser.data, &parser.ptr))
{
shader_sm4_read_instruction(parser.data, &parser.ptr, &instruction);
@@ -824,7 +833,6 @@ static int scan_dxbc(const struct vkd3d_shader_compile_info *compile_info,
vkd3d_shader_free_scan_descriptor_info(scan_descriptor_info);
goto done;
}
- ++message_context->line;
}
ret = VKD3D_OK;
@@ -848,7 +856,7 @@ int vkd3d_shader_scan(const struct vkd3d_shader_compile_info *compile_info, char
if ((ret = vkd3d_shader_validate_compile_info(compile_info, true)) < 0)
return ret;
- vkd3d_shader_message_context_init(&message_context, compile_info->log_level, compile_info->source_name);
+ vkd3d_shader_message_context_init(&message_context, compile_info->log_level);
ret = scan_dxbc(compile_info, &message_context);
@@ -877,7 +885,7 @@ static int compile_dxbc_tpf(const struct vkd3d_shader_compile_info *compile_info
if ((ret = scan_dxbc(&scan_info, message_context)) < 0)
return ret;
- if ((ret = vkd3d_shader_parser_init(&parser, &compile_info->source, message_context)) < 0)
+ if ((ret = vkd3d_shader_parser_init(&parser, compile_info, message_context)) < 0)
{
vkd3d_shader_free_scan_descriptor_info(&scan_descriptor_info);
return ret;
@@ -902,8 +910,6 @@ static int compile_dxbc_tpf(const struct vkd3d_shader_compile_info *compile_info
return VKD3D_ERROR;
}
- message_context->line = 2; /* Line 1 is the version token. */
- message_context->column = 1;
while (!shader_sm4_is_end(parser.data, &parser.ptr))
{
shader_sm4_read_instruction(parser.data, &parser.ptr, &instruction);
@@ -917,7 +923,6 @@ static int compile_dxbc_tpf(const struct vkd3d_shader_compile_info *compile_info
if ((ret = vkd3d_dxbc_compiler_handle_instruction(spirv_compiler, &instruction)) < 0)
break;
- ++message_context->line;
}
if (ret >= 0)
@@ -949,7 +954,7 @@ int vkd3d_shader_compile(const struct vkd3d_shader_compile_info *compile_info,
if ((ret = vkd3d_shader_validate_compile_info(compile_info, true)) < 0)
return ret;
- vkd3d_shader_message_context_init(&message_context, compile_info->log_level, compile_info->source_name);
+ vkd3d_shader_message_context_init(&message_context, compile_info->log_level);
switch (compile_info->source_type)
{
@@ -1051,7 +1056,7 @@ int vkd3d_shader_parse_input_signature(const struct vkd3d_shader_code *dxbc,
if (messages)
*messages = NULL;
- vkd3d_shader_message_context_init(&message_context, VKD3D_SHADER_LOG_INFO, NULL);
+ vkd3d_shader_message_context_init(&message_context, VKD3D_SHADER_LOG_INFO);
ret = shader_parse_input_signature(dxbc->code, dxbc->size, &message_context, signature);
vkd3d_shader_message_context_trace_messages(&message_context);
@@ -1174,7 +1179,7 @@ int vkd3d_shader_preprocess(const struct vkd3d_shader_compile_info *compile_info
if ((ret = vkd3d_shader_validate_compile_info(compile_info, false)) < 0)
return ret;
- vkd3d_shader_message_context_init(&message_context, compile_info->log_level, compile_info->source_name);
+ vkd3d_shader_message_context_init(&message_context, compile_info->log_level);
ret = preproc_lexer_parse(compile_info, out, &message_context);
diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h
index 83038384..e974b928 100644
--- a/libs/vkd3d-shader/vkd3d_shader_private.h
+++ b/libs/vkd3d-shader/vkd3d_shader_private.h
@@ -844,11 +844,15 @@ int vkd3d_string_buffer_printf(struct vkd3d_string_buffer *buffer,
void vkd3d_string_buffer_trace_(const struct vkd3d_string_buffer *buffer, const char *function) DECLSPEC_HIDDEN;
int vkd3d_string_buffer_vprintf(struct vkd3d_string_buffer *buffer, const char *format, va_list args) DECLSPEC_HIDDEN;
-struct vkd3d_shader_message_context
+struct vkd3d_shader_location
{
- enum vkd3d_shader_log_level log_level;
const char *source_name;
unsigned int line, column;
+};
+
+struct vkd3d_shader_message_context
+{
+ enum vkd3d_shader_log_level log_level;
struct vkd3d_string_buffer messages;
};
@@ -856,18 +860,19 @@ void vkd3d_shader_message_context_cleanup(struct vkd3d_shader_message_context *c
bool vkd3d_shader_message_context_copy_messages(struct vkd3d_shader_message_context *context,
char **out) DECLSPEC_HIDDEN;
void vkd3d_shader_message_context_init(struct vkd3d_shader_message_context *context,
- enum vkd3d_shader_log_level log_level, const char *source_name) DECLSPEC_HIDDEN;
+ enum vkd3d_shader_log_level log_level) DECLSPEC_HIDDEN;
void vkd3d_shader_message_context_trace_messages_(const struct vkd3d_shader_message_context *context,
const char *function) DECLSPEC_HIDDEN;
#define vkd3d_shader_message_context_trace_messages(context) \
vkd3d_shader_message_context_trace_messages_(context, __FUNCTION__)
-void vkd3d_shader_error(struct vkd3d_shader_message_context *context, enum vkd3d_shader_error error,
- const char *format, ...) VKD3D_PRINTF_FUNC(3, 4) DECLSPEC_HIDDEN;
-void vkd3d_shader_verror(struct vkd3d_shader_message_context *context,
+void vkd3d_shader_error(struct vkd3d_shader_message_context *context, const struct vkd3d_shader_location *location,
+ enum vkd3d_shader_error error, const char *format, ...) VKD3D_PRINTF_FUNC(4, 5) DECLSPEC_HIDDEN;
+void vkd3d_shader_verror(struct vkd3d_shader_message_context *context, const struct vkd3d_shader_location *location,
enum vkd3d_shader_error error, const char *format, va_list args) DECLSPEC_HIDDEN;
int shader_extract_from_dxbc(const void *dxbc, size_t dxbc_length,
- struct vkd3d_shader_message_context *message_context, struct vkd3d_shader_desc *desc) DECLSPEC_HIDDEN;
+ struct vkd3d_shader_message_context *message_context, const char *source_name,
+ struct vkd3d_shader_desc *desc) DECLSPEC_HIDDEN;
void free_shader_desc(struct vkd3d_shader_desc *desc) DECLSPEC_HIDDEN;
int shader_parse_input_signature(const void *dxbc, size_t dxbc_length,
--
2.29.2
2
1
[PATCH] wine.inf: Store Dynamic DST data for Asia/Tehran as "relative" dates.
by Henri Verbeet 15 Dec '20
by Henri Verbeet 15 Dec '20
15 Dec '20
I.e., the "Nth <weekday> of <month>" form. This form is much less convenient
for timezones where the DST change happens on specific dates, but some
applications distribute old versions of Mono that don't bother checking the
"wYear" fields of the SYSTEMTIME fields in the TIME_ZONE_INFORMATION structure
returned by GetTimeZoneInformation(), and instead always convert the presumed
"relative" dates to "absolute" dates. Unsurprisingly, the resulting dates are
invalid, and these applications then end up throwing
"System.NotSupportedException: Can't get timezone name." when run in such a
timezone, typically early during startup.
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
This happens with at least "INSIDE" and "Life is Strange: Before the Storm",
but the issue is much more widespread than that, typically affecting any
application that does anything with times or dates and uses an affected
version of Mono.
loader/wine.inf.in | 90 +++++++++++++++++++++++-----------------------
1 file changed, 45 insertions(+), 45 deletions(-)
diff --git a/loader/wine.inf.in b/loader/wine.inf.in
index 0cbbcb710f6..d5dd2d5b66b 100644
--- a/loader/wine.inf.in
+++ b/loader/wine.inf.in
@@ -3240,53 +3240,53 @@ HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time,"MUI_Dlt",,"@tzres.dll,-55
HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time,"MUI_Std",,"@tzres.dll,-5568"
HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time,"Std",,"Iran Standard Time"
HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time,"TZI",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,00,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1991",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,c7,07,09,00,00,00,16,00,00,00,00,00,00,00,00,00,c7,07,05,00,05,00,03,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1992",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,c8,07,09,00,02,00,16,00,00,00,00,00,00,00,00,00,c8,07,03,00,00,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1993",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,c9,07,09,00,03,00,16,00,00,00,00,00,00,00,00,00,c9,07,03,00,01,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1994",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,ca,07,09,00,04,00,16,00,00,00,00,00,00,00,00,00,ca,07,03,00,02,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1995",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,cb,07,09,00,05,00,16,00,00,00,00,00,00,00,00,00,cb,07,03,00,03,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1996",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,cc,07,09,00,06,00,15,00,00,00,00,00,00,00,00,00,cc,07,03,00,04,00,15,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1997",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,cd,07,09,00,01,00,16,00,00,00,00,00,00,00,00,00,cd,07,03,00,06,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1998",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,ce,07,09,00,02,00,16,00,00,00,00,00,00,00,00,00,ce,07,03,00,00,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1999",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,cf,07,09,00,03,00,16,00,00,00,00,00,00,00,00,00,cf,07,03,00,01,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2000",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,d0,07,09,00,04,00,15,00,00,00,00,00,00,00,00,00,d0,07,03,00,02,00,15,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2001",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,d1,07,09,00,06,00,16,00,00,00,00,00,00,00,00,00,d1,07,03,00,04,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2002",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,d2,07,09,00,00,00,16,00,00,00,00,00,00,00,00,00,d2,07,03,00,05,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2003",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,d3,07,09,00,01,00,16,00,00,00,00,00,00,00,00,00,d3,07,03,00,06,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2004",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,d4,07,09,00,02,00,15,00,00,00,00,00,00,00,00,00,d4,07,03,00,00,00,15,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2005",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,d5,07,09,00,04,00,16,00,00,00,00,00,00,00,00,00,d5,07,03,00,02,00,16,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1991",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,00,00,04,00,00,00,00,00,00,00,00,00,00,00,05,00,05,00,01,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1992",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,02,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1993",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,03,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,01,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1994",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,04,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,02,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1995",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,05,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,03,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1996",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,04,00,03,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1997",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,01,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1998",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,02,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"1999",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,03,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,01,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2000",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,04,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,02,00,03,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2001",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,04,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2002",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,00,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2003",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,01,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2004",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,02,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,03,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2005",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,04,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,02,00,04,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2006",1,2e,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2007",1,2e,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2008",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,d8,07,09,00,00,00,15,00,00,00,00,00,00,00,00,00,d8,07,03,00,05,00,15,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2009",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,d9,07,09,00,02,00,16,00,00,00,00,00,00,00,00,00,d9,07,03,00,00,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2010",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,da,07,09,00,03,00,16,00,00,00,00,00,00,00,00,00,da,07,03,00,01,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2011",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,db,07,09,00,04,00,16,00,00,00,00,00,00,00,00,00,db,07,03,00,02,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2012",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,dc,07,09,00,05,00,15,00,00,00,00,00,00,00,00,00,dc,07,03,00,03,00,15,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2013",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,dd,07,09,00,00,00,16,00,00,00,00,00,00,00,00,00,dd,07,03,00,05,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2014",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,de,07,09,00,01,00,16,00,00,00,00,00,00,00,00,00,de,07,03,00,06,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2015",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,df,07,09,00,02,00,16,00,00,00,00,00,00,00,00,00,df,07,03,00,00,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2016",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,e0,07,09,00,03,00,15,00,00,00,00,00,00,00,00,00,e0,07,03,00,01,00,15,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2017",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,e1,07,09,00,05,00,16,00,00,00,00,00,00,00,00,00,e1,07,03,00,03,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2018",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,e2,07,09,00,06,00,16,00,00,00,00,00,00,00,00,00,e2,07,03,00,04,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2019",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,e3,07,09,00,00,00,16,00,00,00,00,00,00,00,00,00,e3,07,03,00,05,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2020",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,e4,07,09,00,01,00,15,00,00,00,00,00,00,00,00,00,e4,07,03,00,06,00,15,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2021",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,e5,07,09,00,03,00,16,00,00,00,00,00,00,00,00,00,e5,07,03,00,01,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2022",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,e6,07,09,00,04,00,16,00,00,00,00,00,00,00,00,00,e6,07,03,00,02,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2023",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,e7,07,09,00,05,00,16,00,00,00,00,00,00,00,00,00,e7,07,03,00,03,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2024",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,e8,07,09,00,06,00,15,00,00,00,00,00,00,00,00,00,e8,07,03,00,04,00,15,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2025",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,e9,07,09,00,01,00,16,00,00,00,00,00,00,00,00,00,e9,07,03,00,06,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2026",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,ea,07,09,00,02,00,16,00,00,00,00,00,00,00,00,00,ea,07,03,00,00,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2027",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,eb,07,09,00,03,00,16,00,00,00,00,00,00,00,00,00,eb,07,03,00,01,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2028",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,ec,07,09,00,04,00,15,00,00,00,00,00,00,00,00,00,ec,07,03,00,02,00,15,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2029",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,ed,07,09,00,05,00,15,00,00,00,00,00,00,00,00,00,ed,07,03,00,03,00,15,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2030",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,ee,07,09,00,00,00,16,00,00,00,00,00,00,00,00,00,ee,07,03,00,05,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2031",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,ef,07,09,00,01,00,16,00,00,00,00,00,00,00,00,00,ef,07,03,00,06,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2032",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,f0,07,09,00,02,00,15,00,00,00,00,00,00,00,00,00,f0,07,03,00,00,00,15,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2033",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,f1,07,09,00,03,00,15,00,00,00,00,00,00,00,00,00,f1,07,03,00,01,00,15,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2034",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,f2,07,09,00,05,00,16,00,00,00,00,00,00,00,00,00,f2,07,03,00,03,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2035",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,f3,07,09,00,06,00,16,00,00,00,00,00,00,00,00,00,f3,07,03,00,04,00,16,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2036",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,f4,07,09,00,00,00,15,00,00,00,00,00,00,00,00,00,f4,07,03,00,05,00,15,00,00,00,00,00,00,00,00,00
-HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2037",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,f5,07,09,00,01,00,15,00,00,00,00,00,00,00,00,00,f5,07,03,00,06,00,15,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2008",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,05,00,03,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2009",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,02,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2010",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,03,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,01,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2011",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,04,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,02,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2012",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,05,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,03,00,03,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2013",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,00,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2014",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,01,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2015",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,02,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2016",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,03,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,01,00,03,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2017",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,05,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,03,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2018",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,04,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2019",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,00,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2020",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,01,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,06,00,03,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2021",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,03,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,01,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2022",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,04,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,02,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2023",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,05,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,03,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2024",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,04,00,03,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2025",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,01,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2026",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,02,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2027",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,03,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,01,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2028",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,04,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,02,00,03,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2029",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,05,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,03,00,03,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2030",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,00,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,05,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2031",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,01,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,06,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2032",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,02,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,03,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2033",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,03,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,01,00,03,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2034",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,05,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,03,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2035",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,06,00,04,00,00,00,00,00,00,00,00,00,00,00,03,00,04,00,04,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2036",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,05,00,03,00,00,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"2037",1,2e,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,09,00,01,00,03,00,00,00,00,00,00,00,00,00,00,00,03,00,06,00,03,00,00,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"FirstEntry",0x10001,1991
HKLM,%CurrentVersionNT%\Time Zones\Iran Standard Time\Dynamic DST,"LastEntry",0x10001,2037
HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time,"Display",,"Asia/Jerusalem"
--
2.20.1
1
0
[PATCH vkd3d 1/2] vkd3d-shader: Introduce a helper to report errors while scanning.
by Zebediah Figura 15 Dec '20
by Zebediah Figura 15 Dec '20
15 Dec '20
Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com>
---
libs/vkd3d-shader/vkd3d_shader_main.c | 32 ++++++++++++++++++---------
1 file changed, 21 insertions(+), 11 deletions(-)
diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c
index eed0316c..2ea233bb 100644
--- a/libs/vkd3d-shader/vkd3d_shader_main.c
+++ b/libs/vkd3d-shader/vkd3d_shader_main.c
@@ -600,6 +600,16 @@ static void vkd3d_shader_scan_typed_resource_declaration(struct vkd3d_shader_sca
semantic->resource_type, resource_data_type);
}
+static void vkd3d_shader_scan_error(struct vkd3d_shader_scan_context *context,
+ enum vkd3d_shader_error error, const char *format, ...)
+{
+ va_list args;
+
+ va_start(args, format);
+ vkd3d_shader_verror(context->message_context, error, format, args);
+ va_end(args);
+}
+
static int vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_context *context,
const struct vkd3d_shader_instruction *instruction)
{
@@ -636,7 +646,7 @@ static int vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_context *conte
case VKD3DSIH_ELSE:
if (!(cf_info = vkd3d_shader_scan_get_current_cf_info(context)) || cf_info->type != VKD3D_SHADER_BLOCK_IF)
{
- vkd3d_shader_error(context->message_context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
+ vkd3d_shader_scan_error(context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
"Encountered ‘else’ instruction without corresponding ‘if’ block.");
return VKD3D_ERROR_INVALID_SHADER;
}
@@ -645,7 +655,7 @@ static int vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_context *conte
case VKD3DSIH_ENDIF:
if (!(cf_info = vkd3d_shader_scan_get_current_cf_info(context)) || cf_info->type != VKD3D_SHADER_BLOCK_IF)
{
- vkd3d_shader_error(context->message_context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
+ vkd3d_shader_scan_error(context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
"Encountered ‘endif’ instruction without corresponding ‘if’ block.");
return VKD3D_ERROR_INVALID_SHADER;
}
@@ -658,7 +668,7 @@ static int vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_context *conte
case VKD3DSIH_ENDLOOP:
if (!(cf_info = vkd3d_shader_scan_get_current_cf_info(context)) || cf_info->type != VKD3D_SHADER_BLOCK_LOOP)
{
- vkd3d_shader_error(context->message_context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
+ vkd3d_shader_scan_error(context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
"Encountered ‘endloop’ instruction without corresponding ‘loop’ block.");
return VKD3D_ERROR_INVALID_SHADER;
}
@@ -672,7 +682,7 @@ static int vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_context *conte
if (!(cf_info = vkd3d_shader_scan_get_current_cf_info(context))
|| cf_info->type != VKD3D_SHADER_BLOCK_SWITCH || cf_info->inside_block)
{
- vkd3d_shader_error(context->message_context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
+ vkd3d_shader_scan_error(context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
"Encountered ‘endswitch’ instruction without corresponding ‘switch’ block.");
return VKD3D_ERROR_INVALID_SHADER;
}
@@ -682,7 +692,7 @@ static int vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_context *conte
if (!(cf_info = vkd3d_shader_scan_get_current_cf_info(context))
|| cf_info->type != VKD3D_SHADER_BLOCK_SWITCH)
{
- vkd3d_shader_error(context->message_context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
+ vkd3d_shader_scan_error(context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
"Encountered ‘case’ instruction outside switch block.");
return VKD3D_ERROR_INVALID_SHADER;
}
@@ -692,13 +702,13 @@ static int vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_context *conte
if (!(cf_info = vkd3d_shader_scan_get_current_cf_info(context))
|| cf_info->type != VKD3D_SHADER_BLOCK_SWITCH)
{
- vkd3d_shader_error(context->message_context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
+ vkd3d_shader_scan_error(context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
"Encountered ‘default’ instruction outside switch block.");
return VKD3D_ERROR_INVALID_SHADER;
}
if (cf_info->has_default)
{
- vkd3d_shader_error(context->message_context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
+ vkd3d_shader_scan_error(context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
"Encountered duplicate ‘default’ instruction inside the current switch block.");
return VKD3D_ERROR_INVALID_SHADER;
}
@@ -708,7 +718,7 @@ static int vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_context *conte
case VKD3DSIH_BREAK:
if (!(cf_info = vkd3d_shader_scan_find_innermost_breakable_cf_info(context)))
{
- vkd3d_shader_error(context->message_context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
+ vkd3d_shader_scan_error(context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
"Encountered ‘break’ instruction outside breakable block.");
return VKD3D_ERROR_INVALID_SHADER;
}
@@ -717,7 +727,7 @@ static int vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_context *conte
case VKD3DSIH_BREAKP:
if (!(cf_info = vkd3d_shader_scan_find_innermost_loop_cf_info(context)))
{
- vkd3d_shader_error(context->message_context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
+ vkd3d_shader_scan_error(context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
"Encountered ‘breakp’ instruction outside loop.");
return VKD3D_ERROR_INVALID_SHADER;
}
@@ -725,7 +735,7 @@ static int vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_context *conte
case VKD3DSIH_CONTINUE:
if (!(cf_info = vkd3d_shader_scan_find_innermost_loop_cf_info(context)))
{
- vkd3d_shader_error(context->message_context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
+ vkd3d_shader_scan_error(context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
"Encountered ‘continue’ instruction outside loop.");
return VKD3D_ERROR_INVALID_SHADER;
}
@@ -734,7 +744,7 @@ static int vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_context *conte
case VKD3DSIH_CONTINUEP:
if (!(cf_info = vkd3d_shader_scan_find_innermost_loop_cf_info(context)))
{
- vkd3d_shader_error(context->message_context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
+ vkd3d_shader_scan_error(context, VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF,
"Encountered ‘continue’ instruction outside loop.");
return VKD3D_ERROR_INVALID_SHADER;
}
--
2.29.2
3
3
[PATCH vkd3d] build: Create object directories before running bison or flex.
by Zebediah Figura 15 Dec '20
by Zebediah Figura 15 Dec '20
15 Dec '20
Vkd3d-Bug: https://bugs.winehq.org/show_bug.cgi?id=50334
Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com>
---
Makefile.am | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Makefile.am b/Makefile.am
index 32c8777f..bf1d7bfa 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -119,9 +119,11 @@ vkd3d_v_bison_0 = @echo " BISON " $@;
vkd3d_v_bison_1 =
libs/vkd3d-shader/preproc.yy.c: libs/vkd3d-shader/preproc.l
+ @$(MKDIR_P) libs/vkd3d-shader
$(VKD3D_V_FLEX)$(FLEX) $(LFLAGS) -o $@ $<
libs/vkd3d-shader/preproc.tab.c libs/vkd3d-shader/preproc.tab.h &: libs/vkd3d-shader/preproc.y
+ @$(MKDIR_P) libs/vkd3d-shader
$(VKD3D_V_BISON)$(BISON) $(YFLAGS) -d -o libs/vkd3d-shader/preproc.tab.c $<
BUILT_SOURCES += libs/vkd3d-shader/preproc.tab.h
--
2.29.2
2
1
Signed-off-by: Akihiro Sagawa <sagawa.aki(a)gmail.com>
---
po/ja.po | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
1
0
[PATCH 2/2] wined3d: Avoid referencing empty command buffers in wined3d_query_event_vk_issue().
by Henri Verbeet 15 Dec '20
by Henri Verbeet 15 Dec '20
15 Dec '20
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
This fixes a deadlock in "Ryse: Son of Rome" when starting a new campaign.
dlls/wined3d/query.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
index 9e0e22b32e5..4670bbfddff 100644
--- a/dlls/wined3d/query.c
+++ b/dlls/wined3d/query.c
@@ -1720,6 +1720,14 @@ static BOOL wined3d_query_event_vk_issue(struct wined3d_query *query, uint32_t f
{
context_vk = wined3d_context_vk(context_acquire(&device_vk->d, NULL, 0));
wined3d_context_vk_reference_query(context_vk, query_vk);
+ /* Because we don't actually submit any commands to the command buffer
+ * for event queries, the context's current command buffer may still
+ * be empty, and we should wait on the preceding command buffer
+ * instead. That's not merely an optimisation; if the command buffer
+ * referenced by the query is still empty by the time the application
+ * waits for it, that wait will never complete. */
+ if (!context_vk->current_command_buffer.vk_command_buffer)
+ --query_vk->command_buffer_id;
context_release(&context_vk->c);
return TRUE;
--
2.20.1
1
0
[PATCH 1/2] wined3d: Zero-initialise context_vk in wined3d_context_vk_init().
by Henri Verbeet 15 Dec '20
by Henri Verbeet 15 Dec '20
15 Dec '20
wined3d_context_vk_init() assumes zero-initialised memory, but that's not
necessarily true in case we previously went through an
adapter_vk_init_3d()/adapter_vk_uninit_3d() pair.
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
This fixes a crash on startup with the Vulkan backend in Batman: Arkham
Origins.
dlls/wined3d/context_vk.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/wined3d/context_vk.c b/dlls/wined3d/context_vk.c
index 9db363172f1..2d80c59ca32 100644
--- a/dlls/wined3d/context_vk.c
+++ b/dlls/wined3d/context_vk.c
@@ -3158,6 +3158,7 @@ HRESULT wined3d_context_vk_init(struct wined3d_context_vk *context_vk, struct wi
TRACE("context_vk %p, swapchain %p.\n", context_vk, swapchain);
+ memset(context_vk, 0, sizeof(*context_vk));
wined3d_context_init(&context_vk->c, swapchain);
device_vk = wined3d_device_vk(swapchain->device);
adapter_vk = wined3d_adapter_vk(device_vk->d.adapter);
--
2.20.1
1
0