[Bug 53354] New: Wine should provide icu.dll
WineHQ Bugzilla
wine-bugs at winehq.org
Fri Jul 15 08:25:27 CDT 2022
https://bugs.winehq.org/show_bug.cgi?id=53354
Bug ID: 53354
Summary: Wine should provide icu.dll
Product: Wine
Version: unspecified
Hardware: x86-64
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: -unknown
Assignee: wine-bugs at winehq.org
Reporter: osmanx at problemloesungsmaschine.de
Distribution: ---
Created attachment 72742
--> https://bugs.winehq.org/attachment.cgi?id=72742
tzdb.exe
Windows since at least version Windows 10 19H1 ships a icu.dll in the system
directory. The VS2022 (and I think also VS2019) C++ standard library in C++20
mode uses this DLL to implement the timezone database as specified by the C++
standard. The standard library loads this DLL dynamically with LoadLibraryExW
(see
<https://github.com/microsoft/STL/blob/ef62d3fa0b8e4e2406b9bb74e916e1ca8a1df802/stl/src/tzdb.cpp#L66>)
and throws a std::system_error (see
<https://github.com/microsoft/STL/blob/ef62d3fa0b8e4e2406b9bb74e916e1ca8a1df802/stl/src/tzdb.cpp#L354>
and
<https://github.com/microsoft/STL/blob/ef62d3fa0b8e4e2406b9bb74e916e1ca8a1df802/stl/src/tzdb.cpp#L455>)
when it cannot load it. In order to provide compatibility with modern Windows
versions, IMHO Wine should thus ship a compatible icu.dll. A similar issue also
exists for older Windows versions even on the Microsoft side (see
<https://github.com/microsoft/STL/issues/1911>).
This issue arose since I recently modernized timezone handling in OpenMPT by
using C++20 chrono. For now, I have worked around the problem in OpenMPT. See
<https://bugs.openmpt.org/view.php?id=1618> and
<https://source.openmpt.org/browse/openmpt?op=comp&compare[]=/trunk/OpenMPT/@17667&compare[]=/trunk/OpenMPT/@17668>.
Simple test case:
```
// cl /std:c++20 /permissive- /EHsc /O2 /W4 tzdb.cpp
#include <chrono>
#include <iostream>
#include <stdexcept>
#include <windows.h>
int main() {
try {
std::chrono::get_tzdb_list();
} catch (const std::exception & e) {
std::cerr << "FAIL: " << e.what() << std::endl;
return 1;
}
std::cout << "OK" << std::endl;
return 0;
}
```
tzdb.exe attached.
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list