Wine-Devel
By message
wine-devel@list.winehq.org
By month
Threads by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 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
June 2018
- 68 participants
- 580 discussions
Re: widl: Set name return value (passed by reference) in the alias case alias case in get_user_type.
by Alexandre Julliard Nov. 23, 2020
by Alexandre Julliard Nov. 23, 2020
Nov. 23, 2020
Gerald Pfeifer <gerald(a)pfeifer.com> writes:
> So, I admit I don't really know this code, but looking at it (triggered
> by a warning issued by GCC development versions), I noticed that this
> variable passed by reference is not initialized here.
It's initialized when we return a type, and it doesn't need to be
initialized on NULL return. The code is correct, but you could probably
set the variable to NULL in the caller to silence the warning.
--
Alexandre Julliard
julliard(a)winehq.org
2
1
Nov. 22, 2020
Looking at
RPC_STATUS WINAPI RpcBindingVectorFree( RPC_BINDING_VECTOR** BindingVector )
{
RPC_STATUS status;
ULONG c;
TRACE("(%p)\n", BindingVector);
for (c=0; c<(*BindingVector)->Count; c++) {
status = RpcBindingFree(&(*BindingVector)->BindingH[c]);
}
HeapFree(GetProcessHeap(), 0, *BindingVector);
*BindingVector = NULL;
return RPC_S_OK;
}
we currently always ignore the outcome of RpcBindingFree and return
RPC_S_OK.
However, there is one case where RpcBindingFree returns something
different (which is if *Binding is null when RPC_S_INVALID_BINDING
is returned).
What is the proper way of handling this? Just keeping the code as
is and removing the unused status variable? Breaking the loop once
RpcBindingFree returns something different from RPC_S_OK? Continuing
and returning the first / the last status different from RPC_S_OK?
Gerald
1
1
Sept. 28, 2018
Dear all,
While test another online bank with wine ActiveX,
I got an unimplemented fuction of ntoskrnl: IoGetDeviceInterfaces,
I found it listed inĀ http://source.winehq.org/WineAPI/ntoskrnl.htmlĀ as a stup,
so I can't understand this log:
wine: Unimplemented function ntoskrnl.exe.IoGetDeviceInterfaces called
at address 0x7b839552 (thread 0022), starting debugger...
Grateful for any explain!
env:
wine1.3.12 on Ubuntu 10.04
Here are the steps:
1. install an ActiveX from
https://e.bank.ecitic.com/perbank5/plugs/CNCBSecPkg_EN.exe
$ rm -rf ~/.wine
$ winetricks -q mfc42
$ wineĀ CNCBSecPkg_EN.exe
fixme:ole:DllRegisterServer stub
fixme:win:DisableProcessWindowsGhosting : stub
fixme:msg:ChangeWindowMessageFilter c057 00000001
fixme:msg:ChangeWindowMessageFilter c057 00000001
fixme:msg:ChangeWindowMessageFilter c057 00000001
fixme:ole:CoCreateInstance no instance created for interface
{ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf} of class
{56fdf344-fd6d-11d0-958a-006097c9a090}, hres is 0x80004002
fixme:sfc:SfcIsFileProtected ((nil), L"C:\\Program
Files\\\4e2d\4fe1\94f6\884c\7f51\94f6\5b89\5168\63a7\4ef6\\unins000.exe")
stub
fixme:win:WINNLSEnableIME hUnknown1 0x1011a bUnknown2 0: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x1011a bUnknown2 -1: stub!
fixme:win:WINNLSEnableIME hUnknown1 0x1011a bUnknown2 0: stub!
wine: Call from 0x7b839552 to unimplemented function
ntoskrnl.exe.IoGetDeviceInterfaces, aborting
wine: Unimplemented function ntoskrnl.exe.IoGetDeviceInterfaces called
at address 0x7b839552 (thread 002b), starting debugger...
wine: Call from 0x7b839552 to unimplemented function
ntoskrnl.exe.IoGetDeviceInterfaces, aborting
wine: Call from 0x7b839552 to unimplemented function
ntoskrnl.exe.IoGetDeviceInterfaces, aborting
2. open the online bank entry with wine builtin IE, then IE will crash:
$ wine iexplore https://e.bank.ecitic.com/perbank5/signIn.do
Please checkout the full log here:
http://pastebin.com/rbAg7gwj
Should I file a singel bug inĀ ntoskrnl component , or separate bugs,
one for ntoskrnl and one for the IE crashing?
Generalliy what component should I switch while file a bug about IE crashing?
Many thanks!
--
Regards,
Qian Hong
-
Sent from Ubuntu
http://www.ubuntu.com/
5
6
Hi guys,
Rather a peripheral question; apologies for that - but I'd imagine
there are experts here that may be able to help.
I have a black-box problem - a Windows app dealing with confidential
data that I can't easily touch (and thus can't get to run under Wine) -
which does some small but critical automation of MS Office - using VBS /
COM scripting.
I'd -really- love some input on how best to trace that series of COM
method calls on Windows itself ie. the (remote) service activation, and
the RPC beyond that - particularly the method names, parameters etc. of
the COM/OLE Office API. I've tried (so far):
http://www.rohitab.com/apimonitor
which, while closed, looks interesting; but traces a lot
in a hard-to-search way and doesn't appear to do the
trick.
https://support.microsoft.com/en-us/help/926098/how-to-enable-com-and-com-dā¦
Sounds useful: using Event Tracing for Windows (ETW) but
has this rather unhelpful property:
"The binary file must be formatted by Microsoft
so that it can be analyzed. Please forward the
.etl files to your support contact. ..." ;-)
Component models used to be all the rage in my youth ;-) surely someone
solved the "strace for COM calls" problem elegantly some-when !
Crazily - might it be possible to instrument, interpose and use Wine's
COM impl. on Windows [ which sounds a bit 'exciting' ;-], or ?
Anyhow - help much appreciated & sorry for the noise !
Regards,
Michael.
--
michael.meeks(a)collabora.com <><, Pseudo Engineer, itinerant idiot
2
4
[PATCH v2] ddraw/tests: Recognize mipmap brokenness on Windows 8 and 10
by Alex Henrie July 16, 2018
by Alex Henrie July 16, 2018
July 16, 2018
Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com>
---
v2: Reset diff_count3 to 0 after use
dlls/ddraw/tests/d3d.c | 77 ++++++++++++++++++++++++++++++++++++--------------
1 file changed, 56 insertions(+), 21 deletions(-)
diff --git a/dlls/ddraw/tests/d3d.c b/dlls/ddraw/tests/d3d.c
index 77836fd627..3cc40e24c4 100644
--- a/dlls/ddraw/tests/d3d.c
+++ b/dlls/ddraw/tests/d3d.c
@@ -24,6 +24,7 @@
#include "wine/test.h"
#include <limits.h>
+#include <math.h>
#include "initguid.h"
#include "ddraw.h"
#include "d3d.h"
@@ -1418,7 +1419,7 @@ static void DeviceLoadTest(void)
RECT loadrect;
POINT loadpoint;
int i, i1, i2;
- unsigned diff_count = 0, diff_count2 = 0;
+ unsigned diff_count = 0, diff_count2 = 0, diff_count3 = 0;
unsigned x, y;
BOOL load_mip_subset_broken = FALSE;
IDirectDrawPalette *palettes[5];
@@ -1939,6 +1940,7 @@ static void DeviceLoadTest(void)
{
diff_count = 0;
diff_count2 = 0;
+ diff_count3 = 0;
memset(&ddsd, 0, sizeof(DDSURFACEDESC2));
ddsd.dwSize = sizeof(ddsd);
@@ -1953,6 +1955,9 @@ static void DeviceLoadTest(void)
for (x = 0; x < ddsd.dwWidth; x++)
{
DWORD color = *textureRow++;
+ DWORD r = (color & 0xff0000) >> 16;
+ DWORD g = (color & 0xff00) >> 8;
+ DWORD b = (color & 0xff);
if (x < loadpoint.x || x >= loadpoint.x + loadrect.right - loadrect.left ||
y < loadpoint.y || y >= loadpoint.y + loadrect.bottom - loadrect.top)
@@ -1961,10 +1966,6 @@ static void DeviceLoadTest(void)
}
else
{
- DWORD r = (color & 0xff0000) >> 16;
- DWORD g = (color & 0xff00) >> 8;
- DWORD b = (color & 0xff);
-
if (r != (0xf0 | i1) || g != x + loadrect.left - loadpoint.x ||
b != y + loadrect.top - loadpoint.y) diff_count++;
}
@@ -1978,21 +1979,29 @@ static void DeviceLoadTest(void)
}
else
{
- DWORD r = (color & 0xff0000) >> 16;
- DWORD g = (color & 0xff00) >> 8;
- DWORD b = (color & 0xff);
-
if (r != (0xf0 | i1) || !IS_VALUE_NEAR(g, x + loadrect.left - loadpoint.x) ||
!IS_VALUE_NEAR(b, y + loadrect.top - loadpoint.y)) diff_count2++;
}
+
+ /* some windows 8 and 10 machines copy the wrong mip */
+ if (x < loadpoint.x / 16 || x >= ceil((loadpoint.x + loadrect.right - loadrect.left) / 16.0) ||
+ y < loadpoint.y / 16 || y >= ceil((loadpoint.y + loadrect.bottom - loadrect.top) / 16.0))
+ {
+ if (color & 0xffffff) diff_count3++;
+ }
+ else
+ {
+ if (r != (0xf0 | (i1 + 4)) || g != x || b != y) diff_count3++;
+ }
}
}
hr = IDirectDrawSurface7_Unlock(texture_levels[1][i1], NULL);
ok(hr==DD_OK, "IDirectDrawSurface7_Unlock returned: %x\n",hr);
- ok(diff_count == 0 || diff_count2 == 0, "Unexpected destination texture level pixels; %u differences at %d level\n",
- MIN(diff_count, diff_count2), i1);
+ ok(diff_count == 0 || diff_count2 == 0 || broken(diff_count3 == 0),
+ "Unexpected destination texture level pixels; %u differences, %d level\n",
+ MIN(MIN(diff_count, diff_count2), diff_count3), i1);
loadpoint.x /= 2;
loadpoint.y /= 2;
@@ -2145,6 +2154,7 @@ static void DeviceLoadTest(void)
skip("IDirect3DDevice7_Load is broken (happens on some modern Windows installations like XP). Skipping affected tests.\n");
} else {
diff_count = 0;
+ diff_count3 = 0;
for (y = 0 ; y < ddsd.dwHeight; y++)
{
@@ -2153,6 +2163,9 @@ static void DeviceLoadTest(void)
for (x = 0; x < ddsd.dwWidth; x++)
{
DWORD color = *textureRow++;
+ DWORD r = (color & 0xff0000) >> 16;
+ DWORD g = (color & 0xff00) >> 8;
+ DWORD b = (color & 0xff);
if (x < loadpoint.x || x >= loadpoint.x + loadrect.right - loadrect.left ||
y < loadpoint.y || y >= loadpoint.y + loadrect.bottom - loadrect.top)
@@ -2161,13 +2174,20 @@ static void DeviceLoadTest(void)
}
else
{
- DWORD r = (color & 0xff0000) >> 16;
- DWORD g = (color & 0xff00) >> 8;
- DWORD b = (color & 0xff);
-
if (r != (0xf0 | 2) || g != x + loadrect.left - loadpoint.x ||
b != y + loadrect.top - loadpoint.y) diff_count++;
}
+
+ /* some windows 8 and 10 machines copy the wrong mip */
+ if (x < loadpoint.x / 16 || x >= (loadpoint.x + loadrect.right - loadrect.left) / 16 ||
+ y < loadpoint.y / 16 || y >= (loadpoint.y + loadrect.bottom - loadrect.top) / 16)
+ {
+ if (color & 0xffffff) diff_count3++;
+ }
+ else
+ {
+ if (r != 0xf7 || g != x || b != y) diff_count3++;
+ }
}
}
}
@@ -2175,7 +2195,9 @@ static void DeviceLoadTest(void)
hr = IDirectDrawSurface7_Unlock(texture_levels[1][0], NULL);
ok(hr==DD_OK, "IDirectDrawSurface7_Unlock returned: %x\n",hr);
- ok(diff_count == 0, "Unexpected destination texture level pixels; %u differences\n", diff_count);
+ ok(diff_count == 0 || broken(diff_count3 == 0),
+ "Unexpected destination texture level pixels; %u differences\n",
+ MIN(diff_count, diff_count3));
for (i = 0; i < 2; i++)
{
@@ -2287,6 +2309,7 @@ static void DeviceLoadTest(void)
if (ddsd.dwWidth == ddsd2.dwWidth && ddsd.dwHeight == ddsd2.dwHeight)
{
diff_count = 0;
+ diff_count3 = 0;
memset(&ddsd, 0, sizeof(DDSURFACEDESC2));
ddsd.dwSize = sizeof(ddsd);
@@ -2301,6 +2324,9 @@ static void DeviceLoadTest(void)
for (x = 0; x < ddsd.dwWidth; x++)
{
DWORD color = *textureRow++;
+ DWORD r = (color & 0xff0000) >> 16;
+ DWORD g = (color & 0xff00) >> 8;
+ DWORD b = (color & 0xff);
if (x < loadpoint.x || x >= loadpoint.x + loadrect.right - loadrect.left ||
y < loadpoint.y || y >= loadpoint.y + loadrect.bottom - loadrect.top)
@@ -2309,20 +2335,29 @@ static void DeviceLoadTest(void)
}
else
{
- DWORD r = (color & 0xff0000) >> 16;
- DWORD g = (color & 0xff00) >> 8;
- DWORD b = (color & 0xff);
-
if (r != (0xf0 | i1) || g != x + loadrect.left - loadpoint.x ||
b != y + loadrect.top - loadpoint.y) diff_count++;
}
+
+ /* some windows 8 and 10 machines copy the wrong mip */
+ if (x < loadpoint.x / 16 || x >= ceil((loadpoint.x + loadrect.right - loadrect.left) / 16.0) ||
+ y < loadpoint.y / 16 || y >= ceil((loadpoint.y + loadrect.bottom - loadrect.top) / 16.0))
+ {
+ if (color & 0xffffff) diff_count3++;
+ }
+ else
+ {
+ if (r != (0xf0 | (i + 4)) || g != x || b != y) diff_count3++;
+ }
}
}
hr = IDirectDrawSurface7_Unlock(texture_levels[1][i], NULL);
ok(hr==DD_OK, "IDirectDrawSurface7_Unlock returned: %x\n",hr);
- ok(diff_count == 0, "Unexpected destination texture level pixels; %u differences at %d level\n", diff_count, i1);
+ ok(diff_count == 0 || broken(diff_count3 == 0),
+ "Unexpected destination texture level pixels; %u differences at %d level\n",
+ MIN(diff_count, diff_count3), i1);
i++;
}
--
2.16.2
2
3
[PATCH] kernel32: Implement K32EnumDeviceDrivers and K32GetDeviceDriverBaseNameA (pt. 2)
by Anthony Lauzon July 13, 2018
by Anthony Lauzon July 13, 2018
July 13, 2018
I noticed my submission yesterday was a little undercooked and since I have
spent some more time on it, I thought I'd try to submit a (hopefully)
proper patch to the list. This is a rough implementation of
K32EnumDeviceDrivers and K32GetDeviceDriverBaseNameA.
2
2
[PATCH v8 1/9] ntdll/tests: Skip map protection tests when access is denied
by Alex Henrie July 11, 2018
by Alex Henrie July 11, 2018
July 11, 2018
Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com>
---
dlls/ntdll/tests/info.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c
index 6c93c3cd58..b18f0d39d9 100644
--- a/dlls/ntdll/tests/info.c
+++ b/dlls/ntdll/tests/info.c
@@ -1789,6 +1789,10 @@ static void test_mapprotection(void)
}
ok( (status == STATUS_SUCCESS) || (status == STATUS_INVALID_INFO_CLASS), "Expected STATUS_SUCCESS, got %08x\n", status);
status = pNtSetInformationProcess( GetCurrentProcess(), ProcessExecuteFlags, &flags, sizeof(flags) );
+ if (status == STATUS_ACCESS_DENIED) {
+ skip("Access to set ProcessExecuteFlags denied\n");
+ return;
+ }
ok( (status == STATUS_SUCCESS) || (status == STATUS_INVALID_INFO_CLASS), "Expected STATUS_SUCCESS, got %08x\n", status);
size.u.LowPart = 0x2000;
--
2.17.1
3
17
Fix for versions x600 and x620 and pointer calculation for mixing image and mask bits.
Tested on *.reg files extracted from:
- XP/2003 key HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\TrayNotify;
- Vista/7 key HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify
Signed-off-by: Denis Malikov <mdn40000(a)mail.ru>
---
dlls/comctl32/imagelist.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c
index a08d60752e..be901462a0 100644
--- a/dlls/comctl32/imagelist.c
+++ b/dlls/comctl32/imagelist.c
@@ -2267,7 +2267,9 @@ HIMAGELIST WINAPI ImageList_Read(IStream *pstm)
return NULL;
if (ilHead.usMagic != (('L' << 8) | 'I'))
return NULL;
- if (ilHead.usVersion != 0x101) /* probably version? */
+ if (ilHead.usVersion != 0x101 &&
+ ilHead.usVersion != 0x600 && /* XP/2003 version */
+ ilHead.usVersion != 0x620) /* Vista/7 version */
return NULL;
TRACE("cx %u, cy %u, flags 0x%04x, cCurImage %u, cMaxImage %u\n",
@@ -2296,23 +2298,25 @@ HIMAGELIST WINAPI ImageList_Read(IStream *pstm)
{
DWORD *ptr = image_bits;
BYTE *mask_ptr = mask_bits;
- int stride = himl->cy * image_info->bmiHeader.biWidth;
+ int stride = himl->cy * (ilHead.usVersion != 0x101 ? himl->cx : image_info->bmiHeader.biWidth);
+ int image_step = ilHead.usVersion != 0x101 ? 1 : TILE_COUNT;
+ int mask_step = ilHead.usVersion != 0x101 ? 4 : 8;
if (image_info->bmiHeader.biHeight > 0) /* bottom-up */
{
ptr += image_info->bmiHeader.biHeight * image_info->bmiHeader.biWidth - stride;
- mask_ptr += (image_info->bmiHeader.biHeight * image_info->bmiHeader.biWidth - stride) / 8;
+ mask_ptr += (image_info->bmiHeader.biHeight * image_info->bmiHeader.biWidth - stride) / mask_step;
stride = -stride;
image_info->bmiHeader.biHeight = himl->cy;
}
else image_info->bmiHeader.biHeight = -himl->cy;
- for (i = 0; i < ilHead.cCurImage; i += TILE_COUNT)
+ for (i = 0; i < ilHead.cCurImage; i += image_step)
{
- add_dib_bits( himl, i, min( ilHead.cCurImage - i, TILE_COUNT ),
+ add_dib_bits( himl, i, min( ilHead.cCurImage - i, image_step ),
himl->cx, himl->cy, image_info, mask_info, ptr, mask_ptr );
ptr += stride;
- mask_ptr += stride / 8;
+ mask_ptr += stride / mask_step;
}
}
else
--
2.16.2.windows.1
2
4
July 9, 2018
Signed-off-by: Akihiro Sagawa <sagawa.aki(a)gmail.com>
---
dlls/winmm/tests/midi.c | 4 ++--
dlls/winmm/winmm.c | 19 ++++++++++++++++---
2 files changed, 18 insertions(+), 5 deletions(-)
2
1
[PATCH 2/5] winmm: Preserve fractions in microseconds to compensate rounding errors.
by Akihiro Sagawa July 9, 2018
by Akihiro Sagawa July 9, 2018
July 9, 2018
Otherwise, a song is played faster than expected in some cases.
For instance, we assume that 40 pan control change (CC#10) messages are
expressed in 12.5ms each,
* Prior art omits fractions, i.e. 12ms + 12ms + ... = 480ms.
* Proposal technique saves fractions, i.e. 12ms + 13ms + ... = 500ms.
Ideal duration is 500ms. So, the proposed method is better than prior one.
Signed-off-by: Akihiro Sagawa <sagawa.aki(a)gmail.com>
---
dlls/winmm/winmm.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
2
2
[PATCH 1/5] winmm: Don't allow to set time division property while playing.
by Akihiro Sagawa July 9, 2018
by Akihiro Sagawa July 9, 2018
July 9, 2018
Signed-off-by: Akihiro Sagawa <sagawa.aki(a)gmail.com>
---
dlls/winmm/tests/midi.c | 6 ++++++
dlls/winmm/winmm.c | 8 ++++++--
2 files changed, 12 insertions(+), 2 deletions(-)
2
1
July 9, 2018
Signed-off-by: Owen Rudge <orudge(a)codeweavers.com>
---
dlls/wsdapi/soap.c | 169
+++++++++++++++++++++++++++++++++++++++++-
dlls/wsdapi/tests/discovery.c | 2 +-
2 files changed, 169 insertions(+), 2 deletions(-)
2
1
July 5, 2018
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/comctl32/taskdialog.c | 62 +++++++++++++++++++++++++++++---
dlls/comctl32/tests/taskdialog.c | 61 +++++++++++++++++--------------
2 files changed, 93 insertions(+), 30 deletions(-)
diff --git a/dlls/comctl32/taskdialog.c b/dlls/comctl32/taskdialog.c
index 207f77b012..42d50a93cb 100644
--- a/dlls/comctl32/taskdialog.c
+++ b/dlls/comctl32/taskdialog.c
@@ -60,6 +60,8 @@ struct taskdialog_info
HWND progress_bar;
HWND *radio_buttons;
INT radio_button_count;
+ HWND *command_links;
+ INT command_link_count;
HWND *buttons;
INT button_count;
HWND default_button;
@@ -184,7 +186,8 @@ static HWND taskdialog_find_button(HWND *buttons, INT count, INT id)
static void taskdialog_enable_button(const struct taskdialog_info *dialog_info, INT id, BOOL enable)
{
- HWND hwnd = taskdialog_find_button(dialog_info->buttons, dialog_info->button_count, id);
+ HWND hwnd = taskdialog_find_button(dialog_info->command_links, dialog_info->command_link_count, id);
+ if (!hwnd) hwnd = taskdialog_find_button(dialog_info->buttons, dialog_info->button_count, id);
if (hwnd) EnableWindow(hwnd, enable);
}
@@ -253,6 +256,11 @@ static BOOL taskdialog_hyperlink_enabled(struct taskdialog_info *dialog_info)
return dialog_info->taskconfig->dwFlags & TDF_ENABLE_HYPERLINKS;
}
+static BOOL taskdialog_use_command_link(struct taskdialog_info *dialog_info)
+{
+ return dialog_info->taskconfig->dwFlags & (TDF_USE_COMMAND_LINKS | TDF_USE_COMMAND_LINKS_NO_ICON);
+}
+
static void taskdialog_get_label_size(struct taskdialog_info *dialog_info, HWND hwnd, LONG max_width, SIZE *size,
BOOL syslink)
{
@@ -486,6 +494,34 @@ static void taskdialog_add_radio_buttons(struct taskdialog_info *dialog_info)
}
}
+static void taskdialog_add_command_links(struct taskdialog_info *dialog_info)
+{
+ const TASKDIALOGCONFIG *taskconfig = dialog_info->taskconfig;
+ DWORD default_style = BS_MULTILINE | BS_LEFT | BS_TOP | WS_CHILD | WS_VISIBLE | WS_TABSTOP, style;
+ BOOL is_default;
+ WCHAR *textW;
+ INT i;
+
+ if (!taskconfig->cButtons || !taskconfig->pButtons || !taskdialog_use_command_link(dialog_info)) return;
+
+ dialog_info->command_links = Alloc(taskconfig->cButtons * sizeof(*dialog_info->command_links));
+ if (!dialog_info->command_links) return;
+
+ dialog_info->command_link_count = taskconfig->cButtons;
+ for (i = 0; i < dialog_info->command_link_count; i++)
+ {
+ is_default = taskconfig->pButtons[i].nButtonID == taskconfig->nDefaultButton;
+ style = is_default ? default_style | BS_DEFCOMMANDLINK : default_style | BS_COMMANDLINK;
+ textW = taskdialog_gettext(dialog_info, TRUE, taskconfig->pButtons[i].pszButtonText);
+ dialog_info->command_links[i] = CreateWindowW(WC_BUTTONW, textW, style, 0, 0, 0, 0, dialog_info->hwnd,
+ (HMENU)taskconfig->pButtons[i].nButtonID, 0, NULL);
+ SendMessageW(dialog_info->command_links[i], WM_SETFONT, (WPARAM)dialog_info->font, 0);
+ Free(textW);
+
+ if (is_default && !dialog_info->default_button) dialog_info->default_button = dialog_info->command_links[i];
+ }
+}
+
static void taskdialog_add_button(struct taskdialog_info *dialog_info, HWND *button, INT_PTR id, const WCHAR *text,
BOOL custom_button)
{
@@ -504,17 +540,18 @@ static void taskdialog_add_button(struct taskdialog_info *dialog_info, HWND *but
static void taskdialog_add_buttons(struct taskdialog_info *dialog_info)
{
const TASKDIALOGCONFIG *taskconfig = dialog_info->taskconfig;
+ BOOL use_command_links = taskdialog_use_command_link(dialog_info);
DWORD flags = taskconfig->dwCommonButtons;
INT count, max_count;
/* Allocate enough memory for the custom and the default buttons. Maximum 6 default buttons possible. */
max_count = 6;
- if (taskconfig->cButtons && taskconfig->pButtons) max_count += taskconfig->cButtons;
+ if (!use_command_links && taskconfig->cButtons && taskconfig->pButtons) max_count += taskconfig->cButtons;
dialog_info->buttons = Alloc(max_count * sizeof(*dialog_info->buttons));
if (!dialog_info->buttons) return;
- for (count = 0; count < taskconfig->cButtons; count++)
+ for (count = 0; !use_command_links && count < taskconfig->cButtons; count++)
taskdialog_add_button(dialog_info, &dialog_info->buttons[count], taskconfig->pButtons[count].nButtonID,
taskconfig->pButtons[count].pszButtonText, TRUE);
@@ -532,7 +569,7 @@ static void taskdialog_add_buttons(struct taskdialog_info *dialog_info)
if (flags & TDCBF_CANCEL_BUTTON) TASKDIALOG_INIT_COMMON_BUTTON(CANCEL);
if (flags & TDCBF_CLOSE_BUTTON) TASKDIALOG_INIT_COMMON_BUTTON(CLOSE);
- if (!count) TASKDIALOG_INIT_COMMON_BUTTON(OK);
+ if (!count && !dialog_info->command_link_count) TASKDIALOG_INIT_COMMON_BUTTON(OK);
#undef TASKDIALOG_INIT_COMMON_BUTTON
dialog_info->button_count = count;
@@ -621,6 +658,19 @@ static void taskdialog_layout(struct taskdialog_info *dialog_info)
dialog_height = y + size.cy;
}
+ /* Command links */
+ for (i = 0; i < dialog_info->command_link_count; i++)
+ {
+ x = main_icon_right + h_spacing;
+ y = dialog_height + v_spacing;
+ taskdialog_get_label_size(dialog_info, dialog_info->command_links[i], dialog_width - x - h_spacing, &size, FALSE);
+ size.cx = dialog_width - x - h_spacing;
+ /* Add spacing */
+ size.cy += 4;
+ SetWindowPos(dialog_info->command_links[i], 0, x, y, size.cx, size.cy, SWP_NOZORDER);
+ dialog_height = y + size.cy;
+ }
+
dialog_height = max(dialog_height, main_icon_bottom);
/* Common and custom buttons */
@@ -756,9 +806,12 @@ static void taskdialog_init(struct taskdialog_info *dialog_info, HWND hwnd)
taskdialog_add_content(dialog_info);
taskdialog_add_progress_bar(dialog_info);
taskdialog_add_radio_buttons(dialog_info);
+ taskdialog_add_command_links(dialog_info);
taskdialog_add_buttons(dialog_info);
/* Set default button */
+ if (!dialog_info->default_button && dialog_info->command_links)
+ dialog_info->default_button = dialog_info->command_links[0];
if (!dialog_info->default_button) dialog_info->default_button = dialog_info->buttons[0];
SendMessageW(dialog_info->hwnd, WM_NEXTDLGCTL, (WPARAM)dialog_info->default_button, TRUE);
id = GetWindowLongW(dialog_info->default_button, GWLP_ID);
@@ -774,6 +827,7 @@ static void taskdialog_destroy(struct taskdialog_info *dialog_info)
if (dialog_info->main_instruction_font) DeleteObject(dialog_info->main_instruction_font);
if (dialog_info->buttons) Free(dialog_info->buttons);
if (dialog_info->radio_buttons) Free(dialog_info->radio_buttons);
+ if (dialog_info->command_links) Free(dialog_info->command_links);
}
static INT_PTR CALLBACK taskdialog_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
diff --git a/dlls/comctl32/tests/taskdialog.c b/dlls/comctl32/tests/taskdialog.c
index 2cda04081f..33d3757308 100644
--- a/dlls/comctl32/tests/taskdialog.c
+++ b/dlls/comctl32/tests/taskdialog.c
@@ -323,7 +323,7 @@ static void test_callback(void)
static void test_buttons(void)
{
TASKDIALOGCONFIG info = {0};
-
+ static const DWORD command_link_flags[] = {0, TDF_USE_COMMAND_LINKS, TDF_USE_COMMAND_LINKS_NO_ICON};
TASKDIALOG_BUTTON custom_buttons[TEST_NUM_BUTTONS], radio_buttons[TEST_NUM_RADIO_BUTTONS];
const WCHAR button_format[] = {'%','0','2','d',0};
/* Each button has two digits as title, plus null-terminator */
@@ -373,31 +373,40 @@ static void test_buttons(void)
info.dwCommonButtons = TDCBF_CANCEL_BUTTON | TDCBF_CLOSE_BUTTON;
run_test(&info, IDCANCEL, 0, msg_return_press_cancel, "default button: unset default");
- /* Test with all common and custom buttons and invalid default ID */
- info.nDefaultButton = 0xff; /* Random ID, should also default to first created button */
- info.cButtons = TEST_NUM_BUTTONS;
- info.pButtons = custom_buttons;
- run_test(&info, ID_START_BUTTON, 0, msg_return_press_custom1, "default button: invalid default, with common buttons - 1");
-
- info.nDefaultButton = -1; /* Should work despite button ID -1 */
- run_test(&info, -1, 0, msg_return_press_custom10, "default button: invalid default, with common buttons - 2");
-
- info.nDefaultButton = -2; /* Should also default to first created button */
- run_test(&info, ID_START_BUTTON, 0, msg_return_press_custom1, "default button: invalid default, with common buttons - 3");
-
- /* Test with only custom buttons and invalid default ID */
- info.dwCommonButtons = 0;
- run_test(&info, ID_START_BUTTON, 0, msg_return_press_custom1, "default button: invalid default, no common buttons");
-
- /* Test with common and custom buttons and valid default ID */
- info.dwCommonButtons = TDCBF_OK_BUTTON | TDCBF_YES_BUTTON | TDCBF_NO_BUTTON
- | TDCBF_CANCEL_BUTTON | TDCBF_RETRY_BUTTON | TDCBF_CLOSE_BUTTON;
- info.nDefaultButton = IDRETRY;
- run_test(&info, IDRETRY, 0, msg_return_press_retry, "default button: valid default - 1");
-
- /* Test with common and custom buttons and valid default ID */
- info.nDefaultButton = ID_START_BUTTON + 3;
- run_test(&info, ID_START_BUTTON + 3, 0, msg_return_press_custom4, "default button: valid default - 2");
+ /* Custom buttons could be command links */
+ for (i = 0; i < ARRAY_SIZE(command_link_flags); i++)
+ {
+ info.dwFlags = command_link_flags[i];
+
+ /* Test with all common and custom buttons and invalid default ID */
+ info.nDefaultButton = 0xff; /* Random ID, should also default to first created button */
+ info.cButtons = TEST_NUM_BUTTONS;
+ info.pButtons = custom_buttons;
+ run_test(&info, ID_START_BUTTON, 0, msg_return_press_custom1,
+ "default button: invalid default, with common buttons - 1");
+
+ info.nDefaultButton = -1; /* Should work despite button ID -1 */
+ run_test(&info, -1, 0, msg_return_press_custom10, "default button: invalid default, with common buttons - 2");
+
+ info.nDefaultButton = -2; /* Should also default to first created button */
+ run_test(&info, ID_START_BUTTON, 0, msg_return_press_custom1,
+ "default button: invalid default, with common buttons - 3");
+
+ /* Test with only custom buttons and invalid default ID */
+ info.dwCommonButtons = 0;
+ run_test(&info, ID_START_BUTTON, 0, msg_return_press_custom1,
+ "default button: invalid default, no common buttons");
+
+ /* Test with common and custom buttons and valid default ID */
+ info.dwCommonButtons = TDCBF_OK_BUTTON | TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON
+ | TDCBF_RETRY_BUTTON | TDCBF_CLOSE_BUTTON;
+ info.nDefaultButton = IDRETRY;
+ run_test(&info, IDRETRY, 0, msg_return_press_retry, "default button: valid default - 1");
+
+ /* Test with common and custom buttons and valid default ID */
+ info.nDefaultButton = ID_START_BUTTON + 3;
+ run_test(&info, ID_START_BUTTON + 3, 0, msg_return_press_custom4, "default button: valid default - 2");
+ }
/* Test radio buttons */
info.nDefaultButton = 0;
--
2.17.1
2
1
July 5, 2018
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/comctl32/taskdialog.c | 139 ++++++++++++++++++++++++-
dlls/comctl32/tests/taskdialog.c | 172 +++++++++++++++++++++++++++----
2 files changed, 290 insertions(+), 21 deletions(-)
diff --git a/dlls/comctl32/taskdialog.c b/dlls/comctl32/taskdialog.c
index 5625f2bc24..207f77b012 100644
--- a/dlls/comctl32/taskdialog.c
+++ b/dlls/comctl32/taskdialog.c
@@ -58,6 +58,8 @@ struct taskdialog_info
HWND main_instruction;
HWND content;
HWND progress_bar;
+ HWND *radio_buttons;
+ INT radio_button_count;
HWND *buttons;
INT button_count;
HWND default_button;
@@ -69,6 +71,7 @@ struct taskdialog_info
LONG h_spacing;
LONG v_spacing;
} m;
+ INT selected_radio_id;
};
struct button_layout_info
@@ -185,6 +188,18 @@ static void taskdialog_enable_button(const struct taskdialog_info *dialog_info,
if (hwnd) EnableWindow(hwnd, enable);
}
+static void taskdialog_enable_radio_button(const struct taskdialog_info *dialog_info, INT id, BOOL enable)
+{
+ HWND hwnd = taskdialog_find_button(dialog_info->radio_buttons, dialog_info->radio_button_count, id);
+ if (hwnd) EnableWindow(hwnd, enable);
+}
+
+static void taskdialog_click_radio_button(const struct taskdialog_info *dialog_info, INT id)
+{
+ HWND hwnd = taskdialog_find_button(dialog_info->radio_buttons, dialog_info->radio_button_count, id);
+ if (hwnd) SendMessageW(hwnd, BM_CLICK, 0, 0);
+}
+
static HRESULT taskdialog_notify(struct taskdialog_info *dialog_info, UINT notification, WPARAM wparam, LPARAM lparam)
{
const TASKDIALOGCONFIG *taskconfig = dialog_info->taskconfig;
@@ -193,8 +208,18 @@ static HRESULT taskdialog_notify(struct taskdialog_info *dialog_info, UINT notif
: S_OK;
}
-static void taskdialog_on_button_click(struct taskdialog_info *dialog_info, WORD command_id)
+static void taskdialog_on_button_click(struct taskdialog_info *dialog_info, INT command_id)
{
+ HWND radio_button;
+
+ radio_button = taskdialog_find_button(dialog_info->radio_buttons, dialog_info->radio_button_count, command_id);
+ if (radio_button)
+ {
+ dialog_info->selected_radio_id = command_id;
+ taskdialog_notify(dialog_info, TDN_RADIO_BUTTON_CLICKED, command_id, 0);
+ return;
+ }
+
if (taskdialog_notify(dialog_info, TDN_BUTTON_CLICKED, command_id, 0) == S_OK)
EndDialog(dialog_info->hwnd, command_id);
}
@@ -269,6 +294,49 @@ static void taskdialog_get_label_size(struct taskdialog_info *dialog_info, HWND
Free(text);
}
+static void taskdialog_get_radio_button_size(struct taskdialog_info *dialog_info, HWND hwnd, LONG max_width, SIZE *size)
+{
+ DWORD style = DT_EXPANDTABS | DT_CALCRECT | DT_WORDBREAK;
+ HFONT hfont, old_hfont;
+ HDC hdc;
+ RECT rect = {0};
+ INT text_length;
+ WCHAR *text;
+ INT text_offset, radio_box_width, radio_box_height;
+
+ hdc = GetDC(hwnd);
+ hfont = (HFONT)SendMessageW(hwnd, WM_GETFONT, 0, 0);
+ old_hfont = SelectObject(hdc, hfont);
+
+ radio_box_width = 12 * GetDeviceCaps(hdc, LOGPIXELSX) / 96 + 1;
+ radio_box_height = 12 * GetDeviceCaps(hdc, LOGPIXELSY) / 96 + 1;
+ GetCharWidthW(hdc, '0', '0', &text_offset);
+ text_offset /= 2;
+
+ if (dialog_info->taskconfig->dwFlags & TDF_RTL_LAYOUT)
+ style |= DT_RIGHT | DT_RTLREADING;
+ else
+ style |= DT_LEFT;
+
+ rect.right = max_width - radio_box_width - text_offset;
+ text_length = GetWindowTextLengthW(hwnd);
+ text = Alloc((text_length + 1) * sizeof(WCHAR));
+ if (!text)
+ {
+ size->cx = 0;
+ size->cy = 0;
+ return;
+ }
+ GetWindowTextW(hwnd, text, text_length + 1);
+ size->cy = DrawTextW(hdc, text, text_length, &rect, style);
+ size->cx = min(max_width - radio_box_width - text_offset, rect.right - rect.left);
+ size->cx += radio_box_width + text_offset;
+ size->cy = max(size->cy, radio_box_height);
+ if (old_hfont) SelectObject(hdc, old_hfont);
+ Free(text);
+ ReleaseDC(hwnd, hdc);
+}
+
static ULONG_PTR taskdialog_get_standard_icon(LPCWSTR icon)
{
if (icon == TD_WARNING_ICON)
@@ -309,6 +377,28 @@ static void taskdialog_set_icon(struct taskdialog_info *dialog_info, INT element
}
}
+static void taskdialog_check_default_radio_buttons(struct taskdialog_info *dialog_info)
+{
+ const TASKDIALOGCONFIG *taskconfig = dialog_info->taskconfig;
+ HWND default_button;
+ INT id;
+
+ if (!dialog_info->radio_button_count) return;
+
+ default_button = taskdialog_find_button(dialog_info->radio_buttons, dialog_info->radio_button_count,
+ taskconfig->nDefaultRadioButton);
+
+ if (!default_button && !(taskconfig->dwFlags & TDF_NO_DEFAULT_RADIO_BUTTON))
+ default_button = dialog_info->radio_buttons[0];
+
+ if (default_button)
+ {
+ SendMessageW(default_button, BM_SETCHECK, BST_CHECKED, 0);
+ id = GetWindowLongW(default_button, GWLP_ID);
+ taskdialog_on_button_click(dialog_info, id);
+ }
+}
+
static void taskdialog_add_main_icon(struct taskdialog_info *dialog_info)
{
if (!dialog_info->taskconfig->u.hMainIcon) return;
@@ -372,6 +462,30 @@ static void taskdialog_add_progress_bar(struct taskdialog_info *dialog_info)
CreateWindowW(PROGRESS_CLASSW, NULL, style, 0, 0, 0, 0, dialog_info->hwnd, NULL, 0, NULL);
}
+static void taskdialog_add_radio_buttons(struct taskdialog_info *dialog_info)
+{
+ const TASKDIALOGCONFIG *taskconfig = dialog_info->taskconfig;
+ static const DWORD style = BS_AUTORADIOBUTTON | BS_MULTILINE | BS_TOP | WS_CHILD | WS_VISIBLE | WS_TABSTOP;
+ WCHAR *textW;
+ INT i;
+
+ if (!taskconfig->cRadioButtons || !taskconfig->pRadioButtons) return;
+
+ dialog_info->radio_buttons = Alloc(taskconfig->cRadioButtons * sizeof(*dialog_info->radio_buttons));
+ if (!dialog_info->radio_buttons) return;
+
+ dialog_info->radio_button_count = taskconfig->cRadioButtons;
+ for (i = 0; i < dialog_info->radio_button_count; i++)
+ {
+ textW = taskdialog_gettext(dialog_info, TRUE, taskconfig->pRadioButtons[i].pszButtonText);
+ dialog_info->radio_buttons[i] =
+ CreateWindowW(WC_BUTTONW, textW, i == 0 ? style | WS_GROUP : style, 0, 0, 0, 0, dialog_info->hwnd,
+ (HMENU)taskconfig->pRadioButtons[i].nButtonID, 0, NULL);
+ SendMessageW(dialog_info->radio_buttons[i], WM_SETFONT, (WPARAM)dialog_info->font, 0);
+ Free(textW);
+ }
+}
+
static void taskdialog_add_button(struct taskdialog_info *dialog_info, HWND *button, INT_PTR id, const WCHAR *text,
BOOL custom_button)
{
@@ -496,6 +610,17 @@ static void taskdialog_layout(struct taskdialog_info *dialog_info)
dialog_height = y + size.cy;
}
+ /* Radio buttons */
+ for (i = 0; i < dialog_info->radio_button_count; i++)
+ {
+ x = main_icon_right + h_spacing;
+ y = dialog_height;
+ taskdialog_get_radio_button_size(dialog_info, dialog_info->radio_buttons[i], dialog_width - x - h_spacing, &size);
+ size.cx = dialog_width - x - h_spacing;
+ SetWindowPos(dialog_info->radio_buttons[i], 0, x, y, size.cx, size.cy, SWP_NOZORDER);
+ dialog_height = y + size.cy;
+ }
+
dialog_height = max(dialog_height, main_icon_bottom);
/* Common and custom buttons */
@@ -630,6 +755,7 @@ static void taskdialog_init(struct taskdialog_info *dialog_info, HWND hwnd)
taskdialog_add_main_instruction(dialog_info);
taskdialog_add_content(dialog_info);
taskdialog_add_progress_bar(dialog_info);
+ taskdialog_add_radio_buttons(dialog_info);
taskdialog_add_buttons(dialog_info);
/* Set default button */
@@ -647,6 +773,7 @@ static void taskdialog_destroy(struct taskdialog_info *dialog_info)
if (dialog_info->font) DeleteObject(dialog_info->font);
if (dialog_info->main_instruction_font) DeleteObject(dialog_info->main_instruction_font);
if (dialog_info->buttons) Free(dialog_info->buttons);
+ if (dialog_info->radio_buttons) Free(dialog_info->radio_buttons);
}
static INT_PTR CALLBACK taskdialog_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
@@ -698,6 +825,12 @@ static INT_PTR CALLBACK taskdialog_proc(HWND hwnd, UINT msg, WPARAM wParam, LPAR
case TDM_SET_PROGRESS_BAR_MARQUEE:
SendMessageW(dialog_info->progress_bar, PBM_SETMARQUEE, wParam, lParam);
break;
+ case TDM_CLICK_RADIO_BUTTON:
+ taskdialog_click_radio_button(dialog_info, wParam);
+ break;
+ case TDM_ENABLE_RADIO_BUTTON:
+ taskdialog_enable_radio_button(dialog_info, wParam, lParam);
+ break;
case WM_INITDIALOG:
dialog_info = (struct taskdialog_info *)lParam;
@@ -706,6 +839,8 @@ static INT_PTR CALLBACK taskdialog_proc(HWND hwnd, UINT msg, WPARAM wParam, LPAR
SetPropW(hwnd, taskdialog_info_propnameW, dialog_info);
taskdialog_notify(dialog_info, TDN_DIALOG_CONSTRUCTED, 0, 0);
taskdialog_notify(dialog_info, TDN_CREATED, 0, 0);
+ /* Default radio button click notification sent after TDN_CREATED */
+ taskdialog_check_default_radio_buttons(dialog_info);
return FALSE;
case WM_COMMAND:
if (HIWORD(wParam) == BN_CLICKED)
@@ -771,7 +906,7 @@ HRESULT WINAPI TaskDialogIndirect(const TASKDIALOGCONFIG *taskconfig, int *butto
Free(template);
if (button) *button = ret;
- if (radio_button) *radio_button = taskconfig->nDefaultButton;
+ if (radio_button) *radio_button = dialog_info.selected_radio_id;
if (verification_flag_checked) *verification_flag_checked = TRUE;
return S_OK;
diff --git a/dlls/comctl32/tests/taskdialog.c b/dlls/comctl32/tests/taskdialog.c
index e91a878876..2cda04081f 100644
--- a/dlls/comctl32/tests/taskdialog.c
+++ b/dlls/comctl32/tests/taskdialog.c
@@ -35,9 +35,11 @@
#define TASKDIALOG_SEQ_INDEX 0
#define TEST_NUM_BUTTONS 10 /* Number of custom buttons to test with */
+#define TEST_NUM_RADIO_BUTTONS 3
#define ID_START 20 /* Lower IDs might be used by the system */
#define ID_START_BUTTON (ID_START + 0)
+#define ID_START_RADIO_BUTTON (ID_START + 20)
static HRESULT (WINAPI *pTaskDialogIndirect)(const TASKDIALOGCONFIG *, int *, int *, BOOL *);
static HRESULT (WINAPI *pTaskDialog)(HWND, HINSTANCE, const WCHAR *, const WCHAR *, const WCHAR *,
@@ -141,6 +143,78 @@ static const struct message_info msg_got_tdn_help[] =
{ 0 }
};
+/* Three radio buttons */
+static const struct message_info msg_return_default_radio_button_1[] =
+{
+ { TDN_CREATED, 0, 0, S_OK, NULL },
+ { TDN_RADIO_BUTTON_CLICKED, ID_START_RADIO_BUTTON, 0, S_OK, msg_send_click_ok },
+ { TDN_BUTTON_CLICKED, IDOK, 0, S_OK, NULL },
+ { 0 }
+};
+
+static const struct message_info msg_return_default_radio_button_2[] =
+{
+ { TDN_CREATED, 0, 0, S_OK, NULL },
+ { TDN_RADIO_BUTTON_CLICKED, ID_START_RADIO_BUTTON + 1, 0, S_OK, msg_send_click_ok },
+ { TDN_BUTTON_CLICKED, IDOK, 0, S_OK, NULL },
+ { 0 }
+};
+
+static const struct message_info msg_return_default_radio_button_3[] =
+{
+ { TDN_CREATED, 0, 0, S_OK, NULL },
+ { TDN_RADIO_BUTTON_CLICKED, -2, 0, S_OK, msg_send_click_ok },
+ { TDN_BUTTON_CLICKED, IDOK, 0, S_OK, NULL },
+ { 0 }
+};
+
+static const struct message_info msg_select_first_radio_button[] =
+{
+ { TDM_CLICK_RADIO_BUTTON, ID_START_RADIO_BUTTON, 0 },
+ { 0 }
+};
+
+static const struct message_info msg_return_first_radio_button[] =
+{
+ { TDN_CREATED, 0, 0, S_OK, NULL },
+ { TDN_RADIO_BUTTON_CLICKED, ID_START_RADIO_BUTTON + 1, 0, S_OK, msg_select_first_radio_button },
+ { TDN_RADIO_BUTTON_CLICKED, ID_START_RADIO_BUTTON, 0, S_OK, msg_send_click_ok },
+ { TDN_BUTTON_CLICKED, IDOK, 0, S_OK, NULL },
+ { 0 }
+};
+
+static const struct message_info msg_select_first_disabled_radio_button_and_press_ok[] =
+{
+ { TDM_ENABLE_RADIO_BUTTON, ID_START_RADIO_BUTTON, 0 },
+ { TDM_CLICK_RADIO_BUTTON, ID_START_RADIO_BUTTON, 0 },
+ { TDM_CLICK_BUTTON, IDOK, 0 },
+ { 0 }
+};
+
+static const struct message_info msg_return_default_radio_button_clicking_disabled[] =
+{
+ { TDN_CREATED, 0, 0, S_OK, NULL },
+ { TDN_RADIO_BUTTON_CLICKED, ID_START_RADIO_BUTTON + 1, 0, S_OK, msg_select_first_disabled_radio_button_and_press_ok },
+ { TDN_RADIO_BUTTON_CLICKED, ID_START_RADIO_BUTTON, 0, S_OK, NULL },
+ { TDN_BUTTON_CLICKED, IDOK, 0, S_OK, NULL },
+ { 0 }
+};
+
+static const struct message_info msg_return_no_default_radio_button_flag[] =
+{
+ { TDN_CREATED, 0, 0, S_OK, msg_send_click_ok },
+ { TDN_RADIO_BUTTON_CLICKED, ID_START_RADIO_BUTTON, 0, S_OK, NULL },
+ { TDN_BUTTON_CLICKED, IDOK, 0, S_OK, NULL },
+ { 0 }
+};
+
+static const struct message_info msg_return_no_default_radio_button_id_and_flag[] =
+{
+ { TDN_CREATED, 0, 0, S_OK, msg_send_click_ok },
+ { TDN_BUTTON_CLICKED, IDOK, 0, S_OK, NULL },
+ { 0 }
+};
+
static void init_test_message(UINT message, WPARAM wParam, LPARAM lParam, struct message *msg)
{
msg->message = WM_TD_CALLBACK;
@@ -151,11 +225,13 @@ static void init_test_message(UINT message, WPARAM wParam, LPARAM lParam, struct
msg->stage = 0;
}
-#define run_test(info, expect_button, seq, context) \
- run_test_(info, expect_button, seq, context, ARRAY_SIZE(seq) - 1, __FILE__, __LINE__)
+#define run_test(info, expect_button, expect_radio_button, seq, context) \
+ run_test_(info, expect_button, expect_radio_button, seq, context, \
+ ARRAY_SIZE(seq) - 1, __FILE__, __LINE__)
-static void run_test_(TASKDIALOGCONFIG *info, int expect_button, const struct message_info *test_messages,
- const char *context, int test_messages_len, const char *file, int line)
+static void run_test_(TASKDIALOGCONFIG *info, int expect_button, int expect_radio_button,
+ const struct message_info *test_messages, const char *context, int test_messages_len,
+ const char *file, int line)
{
struct message *msg, *msg_start;
int ret_button = 0;
@@ -182,6 +258,8 @@ static void run_test_(TASKDIALOGCONFIG *info, int expect_button, const struct me
ok_sequence_(sequences, TASKDIALOG_SEQ_INDEX, msg_start, context, FALSE, file, line);
ok_(file, line)(ret_button == expect_button,
"Wrong button. Expected %d, got %d\n", expect_button, ret_button);
+ ok_(file, line)(ret_radio == expect_radio_button,
+ "Wrong radio button. Expected %d, got %d\n", expect_radio_button, ret_radio);
heap_free(msg_start);
}
@@ -239,16 +317,17 @@ static void test_callback(void)
info.pfCallback = taskdialog_callback_proc;
info.lpCallbackData = test_ref_data;
- run_test(&info, IDOK, msg_return_press_ok, "Press VK_RETURN.");
+ run_test(&info, IDOK, 0, msg_return_press_ok, "Press VK_RETURN.");
}
static void test_buttons(void)
{
TASKDIALOGCONFIG info = {0};
- TASKDIALOG_BUTTON custom_buttons[TEST_NUM_BUTTONS];
+ TASKDIALOG_BUTTON custom_buttons[TEST_NUM_BUTTONS], radio_buttons[TEST_NUM_RADIO_BUTTONS];
const WCHAR button_format[] = {'%','0','2','d',0};
- WCHAR button_titles[TEST_NUM_BUTTONS * 3]; /* Each button has two digits as title, plus null-terminator */
+ /* Each button has two digits as title, plus null-terminator */
+ WCHAR button_titles[TEST_NUM_BUTTONS * 3], radio_button_titles[TEST_NUM_BUTTONS * 3];
int i;
info.cbSize = sizeof(TASKDIALOGCONFIG);
@@ -266,48 +345,103 @@ static void test_buttons(void)
}
custom_buttons[TEST_NUM_BUTTONS - 1].nButtonID = -1;
+ /* Init radio buttons */
+ for (i = 0; i < TEST_NUM_RADIO_BUTTONS; i++)
+ {
+ WCHAR *text = &radio_button_titles[i * 3];
+ wsprintfW(text, button_format, i);
+
+ radio_buttons[i].pszButtonText = text;
+ radio_buttons[i].nButtonID = ID_START_RADIO_BUTTON + i;
+ }
+ radio_buttons[TEST_NUM_RADIO_BUTTONS - 1].nButtonID = -2;
+
/* Test nDefaultButton */
/* Test common buttons with invalid default ID */
info.nDefaultButton = 0; /* Should default to first created button */
info.dwCommonButtons = TDCBF_OK_BUTTON | TDCBF_YES_BUTTON | TDCBF_NO_BUTTON
| TDCBF_CANCEL_BUTTON | TDCBF_RETRY_BUTTON | TDCBF_CLOSE_BUTTON;
- run_test(&info, IDOK, msg_return_press_ok, "default button: unset default");
+ run_test(&info, IDOK, 0, msg_return_press_ok, "default button: unset default");
info.dwCommonButtons = TDCBF_YES_BUTTON | TDCBF_NO_BUTTON
| TDCBF_CANCEL_BUTTON | TDCBF_RETRY_BUTTON | TDCBF_CLOSE_BUTTON;
- run_test(&info, IDYES, msg_return_press_yes, "default button: unset default");
+ run_test(&info, IDYES, 0, msg_return_press_yes, "default button: unset default");
info.dwCommonButtons = TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON | TDCBF_RETRY_BUTTON | TDCBF_CLOSE_BUTTON;
- run_test(&info, IDNO, msg_return_press_no, "default button: unset default");
+ run_test(&info, IDNO, 0, msg_return_press_no, "default button: unset default");
info.dwCommonButtons = TDCBF_CANCEL_BUTTON | TDCBF_RETRY_BUTTON | TDCBF_CLOSE_BUTTON;
- run_test(&info, IDRETRY, msg_return_press_retry, "default button: unset default");
+ run_test(&info, IDRETRY, 0, msg_return_press_retry, "default button: unset default");
info.dwCommonButtons = TDCBF_CANCEL_BUTTON | TDCBF_CLOSE_BUTTON;
- run_test(&info, IDCANCEL, msg_return_press_cancel, "default button: unset default");
+ run_test(&info, IDCANCEL, 0, msg_return_press_cancel, "default button: unset default");
/* Test with all common and custom buttons and invalid default ID */
info.nDefaultButton = 0xff; /* Random ID, should also default to first created button */
info.cButtons = TEST_NUM_BUTTONS;
info.pButtons = custom_buttons;
- run_test(&info, ID_START_BUTTON, msg_return_press_custom1, "default button: invalid default, with common buttons - 1");
+ run_test(&info, ID_START_BUTTON, 0, msg_return_press_custom1, "default button: invalid default, with common buttons - 1");
info.nDefaultButton = -1; /* Should work despite button ID -1 */
- run_test(&info, -1, msg_return_press_custom10, "default button: invalid default, with common buttons - 2");
+ run_test(&info, -1, 0, msg_return_press_custom10, "default button: invalid default, with common buttons - 2");
info.nDefaultButton = -2; /* Should also default to first created button */
- run_test(&info, ID_START_BUTTON, msg_return_press_custom1, "default button: invalid default, with common buttons - 3");
+ run_test(&info, ID_START_BUTTON, 0, msg_return_press_custom1, "default button: invalid default, with common buttons - 3");
/* Test with only custom buttons and invalid default ID */
info.dwCommonButtons = 0;
- run_test(&info, ID_START_BUTTON, msg_return_press_custom1, "default button: invalid default, no common buttons");
+ run_test(&info, ID_START_BUTTON, 0, msg_return_press_custom1, "default button: invalid default, no common buttons");
/* Test with common and custom buttons and valid default ID */
info.dwCommonButtons = TDCBF_OK_BUTTON | TDCBF_YES_BUTTON | TDCBF_NO_BUTTON
| TDCBF_CANCEL_BUTTON | TDCBF_RETRY_BUTTON | TDCBF_CLOSE_BUTTON;
info.nDefaultButton = IDRETRY;
- run_test(&info, IDRETRY, msg_return_press_retry, "default button: valid default - 1");
+ run_test(&info, IDRETRY, 0, msg_return_press_retry, "default button: valid default - 1");
/* Test with common and custom buttons and valid default ID */
info.nDefaultButton = ID_START_BUTTON + 3;
- run_test(&info, ID_START_BUTTON + 3, msg_return_press_custom4, "default button: valid default - 2");
+ run_test(&info, ID_START_BUTTON + 3, 0, msg_return_press_custom4, "default button: valid default - 2");
+
+ /* Test radio buttons */
+ info.nDefaultButton = 0;
+ info.cButtons = 0;
+ info.pButtons = 0;
+ info.dwCommonButtons = TDCBF_OK_BUTTON;
+ info.cRadioButtons = TEST_NUM_RADIO_BUTTONS;
+ info.pRadioButtons = radio_buttons;
+
+ /* Test default first radio button */
+ run_test(&info, IDOK, ID_START_RADIO_BUTTON, msg_return_default_radio_button_1, "default radio button: default first radio button");
+
+ /* Test default radio button */
+ info.nDefaultRadioButton = ID_START_RADIO_BUTTON + 1;
+ run_test(&info, IDOK, info.nDefaultRadioButton, msg_return_default_radio_button_2, "default radio button: default radio button");
+
+ /* Test default radio button with -2 */
+ info.nDefaultRadioButton = -2;
+ run_test(&info, IDOK, info.nDefaultRadioButton, msg_return_default_radio_button_3, "default radio button: default radio button with id -2");
+
+ /* Test default radio button after clicking the first, messages still work even radio button is disabled */
+ info.nDefaultRadioButton = ID_START_RADIO_BUTTON + 1;
+ run_test(&info, IDOK, ID_START_RADIO_BUTTON, msg_return_first_radio_button, "default radio button: radio button after clicking");
+
+ /* Test radio button after disabling and clicking the first */
+ info.nDefaultRadioButton = ID_START_RADIO_BUTTON + 1;
+ run_test(&info, IDOK, ID_START_RADIO_BUTTON, msg_return_default_radio_button_clicking_disabled, "default radio button: disable radio button before clicking");
+
+ /* Test no default radio button, TDF_NO_DEFAULT_RADIO_BUTTON is set, TDN_RADIO_BUTTON_CLICKED will still be received, just radio button not selected */
+ info.nDefaultRadioButton = ID_START_RADIO_BUTTON;
+ info.dwFlags = TDF_NO_DEFAULT_RADIO_BUTTON;
+ run_test(&info, IDOK, info.nDefaultRadioButton, msg_return_no_default_radio_button_flag, "default radio button: no default radio flag");
+
+ /* Test no default radio button, TDF_NO_DEFAULT_RADIO_BUTTON is set and nDefaultRadioButton is 0.
+ * TDN_RADIO_BUTTON_CLICKED will not be sent, and just radio button not selected */
+ info.nDefaultRadioButton = 0;
+ info.dwFlags = TDF_NO_DEFAULT_RADIO_BUTTON;
+ run_test(&info, IDOK, 0, msg_return_no_default_radio_button_id_and_flag, "default radio button: no default radio id and flag");
+
+ /* Test no default radio button, TDF_NO_DEFAULT_RADIO_BUTTON is set and nDefaultRadioButton is invalid.
+ * TDN_RADIO_BUTTON_CLICKED will not be sent, and just radio button not selected */
+ info.nDefaultRadioButton = 0xff;
+ info.dwFlags = TDF_NO_DEFAULT_RADIO_BUTTON;
+ run_test(&info, IDOK, 0, msg_return_no_default_radio_button_id_and_flag, "default radio button: no default flag, invalid id");
}
static void test_help(void)
@@ -319,7 +453,7 @@ static void test_help(void)
info.lpCallbackData = test_ref_data;
info.dwCommonButtons = TDCBF_OK_BUTTON;
- run_test(&info, IDOK, msg_got_tdn_help, "send f1");
+ run_test(&info, IDOK, 0, msg_got_tdn_help, "send f1");
}
struct timer_notification_data
--
2.17.1
2
1
[PATCH v2 1/3] comctl32/taskdialog: Use dynamic buffer for taskdialog_get_label_size().
by Zhiyi Zhang July 5, 2018
by Zhiyi Zhang July 5, 2018
July 5, 2018
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/comctl32/taskdialog.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/dlls/comctl32/taskdialog.c b/dlls/comctl32/taskdialog.c
index 33fb578910..5625f2bc24 100644
--- a/dlls/comctl32/taskdialog.c
+++ b/dlls/comctl32/taskdialog.c
@@ -235,7 +235,7 @@ static void taskdialog_get_label_size(struct taskdialog_info *dialog_info, HWND
HFONT hfont, old_hfont;
HDC hdc;
RECT rect = {0};
- WCHAR text[1024];
+ WCHAR *text;
INT text_length;
if (syslink)
@@ -250,7 +250,15 @@ static void taskdialog_get_label_size(struct taskdialog_info *dialog_info, HWND
style |= DT_LEFT;
hfont = (HFONT)SendMessageW(hwnd, WM_GETFONT, 0, 0);
- text_length = GetWindowTextW(hwnd, text, ARRAY_SIZE(text));
+ text_length = GetWindowTextLengthW(hwnd);
+ text = Alloc((text_length + 1) * sizeof(WCHAR));
+ if (!text)
+ {
+ size->cx = 0;
+ size->cy = 0;
+ return;
+ }
+ GetWindowTextW(hwnd, text, text_length + 1);
hdc = GetDC(hwnd);
old_hfont = SelectObject(hdc, hfont);
rect.right = max_width;
@@ -258,6 +266,7 @@ static void taskdialog_get_label_size(struct taskdialog_info *dialog_info, HWND
size->cx = min(max_width, rect.right - rect.left);
if (old_hfont) SelectObject(hdc, old_hfont);
ReleaseDC(hwnd, hdc);
+ Free(text);
}
static ULONG_PTR taskdialog_get_standard_icon(LPCWSTR icon)
--
2.17.1
2
1
The message text is the same as on windows,
since the exit code doesn't seem reliable.
Currently only supports single line searching,
and not unicode aware. I'll add tests and if needed an implementation
for that sometime later.
Signed-off-by: Fabian Maurer <dark.shadow4(a)web.de>
---
configure | 25 ++----
configure.ac | 1 +
programs/find/Makefile.in | 5 +-
programs/find/find.c | 112 +++++++++++++++++++++--
programs/find/resources.h | 27 ++++++
programs/find/rsrc.rc | 25 ++++++
programs/find/tests/Makefile.in | 4 +
programs/find/tests/find.c | 151 ++++++++++++++++++++++++++++++++
8 files changed, 326 insertions(+), 24 deletions(-)
create mode 100644 programs/find/resources.h
create mode 100644 programs/find/rsrc.rc
create mode 100644 programs/find/tests/Makefile.in
create mode 100644 programs/find/tests/find.c
diff --git a/configure b/configure
index 299fb407d8..56e7dde04c 100755
--- a/configure
+++ b/configure
@@ -800,7 +800,6 @@ infodir
docdir
oldincludedir
includedir
-runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -1862,7 +1861,6 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -2115,15 +2113,6 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
- -runstatedir | --runstatedir | --runstatedi | --runstated \
- | --runstate | --runstat | --runsta | --runst | --runs \
- | --run | --ru | --r)
- ac_prev=runstatedir ;;
- -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
- | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
- | --run=* | --ru=* | --r=*)
- runstatedir=$ac_optarg ;;
-
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -2261,7 +2250,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir runstatedir
+ libdir localedir mandir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -2414,7 +2403,6 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -6626,7 +6614,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -6672,7 +6660,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -6696,7 +6684,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -6741,7 +6729,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -6765,7 +6753,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -19379,6 +19367,7 @@ wine_fn_config_makefile programs/explorer enable_explorer
wine_fn_config_makefile programs/extrac32 enable_extrac32
wine_fn_config_makefile programs/fc enable_fc
wine_fn_config_makefile programs/find enable_find
+wine_fn_config_makefile programs/find/tests enable_tests
wine_fn_config_makefile programs/findstr enable_findstr
wine_fn_config_makefile programs/fsutil enable_fsutil
wine_fn_config_makefile programs/hh enable_hh
diff --git a/configure.ac b/configure.ac
index 469fa8d729..1d6a4cf1c6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3878,6 +3878,7 @@ WINE_CONFIG_MAKEFILE(programs/explorer)
WINE_CONFIG_MAKEFILE(programs/extrac32)
WINE_CONFIG_MAKEFILE(programs/fc)
WINE_CONFIG_MAKEFILE(programs/find)
+WINE_CONFIG_MAKEFILE(programs/find/tests)
WINE_CONFIG_MAKEFILE(programs/findstr)
WINE_CONFIG_MAKEFILE(programs/fsutil)
WINE_CONFIG_MAKEFILE(programs/hh)
diff --git a/programs/find/Makefile.in b/programs/find/Makefile.in
index ef8d61b7ce..4a90905986 100644
--- a/programs/find/Makefile.in
+++ b/programs/find/Makefile.in
@@ -1,4 +1,7 @@
MODULE = find.exe
-APPMODE = -mconsole -municode
+APPMODE = -mconsole
+IMPORTS = user32 shlwapi
C_SRCS = find.c
+
+RC_SRCS = rsrc.rc
diff --git a/programs/find/find.c b/programs/find/find.c
index 9d7aecd402..937f773243 100644
--- a/programs/find/find.c
+++ b/programs/find/find.c
@@ -16,18 +16,120 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include <windows.h>
+#include <stdlib.h>
+#include <shlwapi.h>
+
+#include "wine/heap.h"
#include "wine/debug.h"
+#include "resources.h"
WINE_DEFAULT_DEBUG_CHANNEL(find);
-int wmain(int argc, WCHAR *argv[])
+char* read_from_pipe(HANDLE handle)
+{
+ char buffer[4096];
+ DWORD bytes_read;
+ DWORD length = 0;
+ BOOL success;
+ char *ret = heap_alloc_zero(1);
+
+ for (;;)
+ {
+ success = ReadFile(handle, buffer, sizeof(buffer), &bytes_read, NULL);
+ if (!success || !bytes_read)
+ break;
+ ret = heap_realloc(ret, length + bytes_read);
+ memcpy((char *)ret + length, buffer, bytes_read);
+ length += bytes_read;
+ }
+
+ ret[length] = 0;
+ return ret;
+}
+
+void write_to_pipe(HANDLE handle, const char *str)
+{
+ DWORD bytes_written_sum = 0;
+ DWORD length = lstrlenA(str);
+ do
+ {
+ DWORD bytes_written;
+ WriteFile(handle, str, length * sizeof(char), &bytes_written, NULL);
+ bytes_written_sum += bytes_written;
+ } while (bytes_written_sum < length);
+}
+
+void find_printf(const char *str)
+{
+ write_to_pipe(GetStdHandle(STD_OUTPUT_HANDLE), str);
+}
+
+int do_find(const char *text, const char* tofind)
{
+ void *found;
+
+ if (lstrlenA(text) == 0)
+ return 1;
+
+ found = StrStrA(text, tofind);
+
+ if (found)
+ {
+ find_printf(text);
+ find_printf("\r\n");
+ return 0;
+ }
+
+ return 1;
+}
+
+int main(int argc, char *argv[])
+{
+ char *text_stdin;
+ char *tofind = NULL;
+ char message_parameter_invalid[64];
+ char message_switch_invalid[64];
int i;
+ int exitcode;
- WINE_FIXME("stub:");
+ TRACE("running find:");
for (i = 0; i < argc; i++)
- WINE_FIXME(" %s", wine_dbgstr_w(argv[i]));
- WINE_FIXME("\n");
+ {
+ TRACE(" %s", argv[i]);
+ }
+ TRACE("\n");
+
+ LoadStringA(GetModuleHandleW(NULL), IDS_INVALID_PARAMETER, message_parameter_invalid, sizeof(message_parameter_invalid));
+ LoadStringA(GetModuleHandleW(NULL), IDS_INVALID_SWITCH, message_switch_invalid, sizeof(message_switch_invalid));
+
+ /* We read the complete input at once, for simplicity */
+ text_stdin = read_from_pipe(GetStdHandle(STD_INPUT_HANDLE));
+
+ for (i = 1; i < argc; i++)
+ {
+ if (argv[i][0] == '/')
+ {
+ find_printf(message_switch_invalid);
+ exitcode = 2;
+ goto cleanup;
+ }
+ else if(tofind == NULL)
+ {
+ tofind = argv[i];
+ }
+ }
+
+ if (tofind == NULL)
+ {
+ find_printf(message_parameter_invalid);
+ exitcode = 2;
+ goto cleanup;
+ }
+
+ exitcode = do_find(text_stdin, tofind);
- return 0;
+cleanup:
+ heap_free(text_stdin);
+ return exitcode;
}
diff --git a/programs/find/resources.h b/programs/find/resources.h
new file mode 100644
index 0000000000..8712d91e36
--- /dev/null
+++ b/programs/find/resources.h
@@ -0,0 +1,27 @@
+/*
+ * Resource IDs
+ *
+ * Copyright 2018 Fabian Maurer
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_FIND_RESOURCES_H
+#define __WINE_FIND_RESOURCES_H
+
+#define IDS_INVALID_PARAMETER 1000
+#define IDS_INVALID_SWITCH 1001
+
+#endif /* __WINE_FIND_RESOURCES_H */
diff --git a/programs/find/rsrc.rc b/programs/find/rsrc.rc
new file mode 100644
index 0000000000..f10fb6285f
--- /dev/null
+++ b/programs/find/rsrc.rc
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2018 Fabian Maurer
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "resources.h"
+
+STRINGTABLE
+{
+ IDS_INVALID_PARAMETER "FIND: Parameter format not correct\r\n"
+ IDS_INVALID_SWITCH "FIND: Invalid switch\r\n"
+}
diff --git a/programs/find/tests/Makefile.in b/programs/find/tests/Makefile.in
new file mode 100644
index 0000000000..ad88243ede
--- /dev/null
+++ b/programs/find/tests/Makefile.in
@@ -0,0 +1,4 @@
+TESTDLL = find.exe
+
+C_SRCS = \
+ find.c
diff --git a/programs/find/tests/find.c b/programs/find/tests/find.c
new file mode 100644
index 0000000000..2dce343965
--- /dev/null
+++ b/programs/find/tests/find.c
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2018 Fabian Maurer
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <windows.h>
+#include <stdio.h>
+
+#include "wine/heap.h"
+#include "wine/test.h"
+
+/* Copied from find.exe implementation */
+char* read_from_pipe(HANDLE handle)
+{
+ char buffer[4096];
+ DWORD bytes_read;
+ DWORD length = 0;
+ BOOL success;
+ char *ret = heap_alloc_zero(1);
+
+ for (;;)
+ {
+ success = ReadFile(handle, buffer, sizeof(buffer), &bytes_read, NULL);
+ if (!success || !bytes_read)
+ break;
+ ret = heap_realloc(ret, length + bytes_read);
+ memcpy((char *)ret + length, buffer, bytes_read);
+ length += bytes_read;
+ }
+
+ ret[length] = 0;
+ return ret;
+}
+
+/* Copied from find.exe implementation */
+void write_to_pipe(HANDLE handle, const char *str)
+{
+ DWORD bytes_written_sum = 0;
+ DWORD length = lstrlenA(str);
+ do
+ {
+ DWORD bytes_written;
+ WriteFile(handle, str, length * sizeof(char), &bytes_written, NULL);
+ bytes_written_sum += bytes_written;
+ } while (bytes_written_sum < length);
+}
+
+#define run_find(commandline, input, out_expected, exitcode_expected) \
+ run_find_(commandline, input, out_expected, exitcode_expected, __FILE__, __LINE__)
+
+static void run_find_(const char *commandline, const char *input, const char *out_expected, int exitcode_expected, const char *file, int line)
+{
+ HANDLE child_stdin_read;
+ HANDLE child_stdout_write;
+ HANDLE parent_stdin_write;
+ HANDLE parent_stdout_read;
+ STARTUPINFOA startup_info = {0};
+ SECURITY_ATTRIBUTES security_attributes;
+ PROCESS_INFORMATION process_info = {0};
+ char *child_output = NULL;
+ char cmd[4096];
+ int comparison;
+ DWORD exitcode;
+
+ security_attributes.nLength = sizeof(SECURITY_ATTRIBUTES);
+ security_attributes.bInheritHandle = TRUE;
+ security_attributes.lpSecurityDescriptor = NULL;
+
+ CreatePipe(&parent_stdout_read, &child_stdout_write, &security_attributes, 0);
+ CreatePipe(&child_stdin_read, &parent_stdin_write, &security_attributes, 0);
+
+ SetHandleInformation(parent_stdout_read, HANDLE_FLAG_INHERIT, 0);
+ SetHandleInformation(parent_stdin_write, HANDLE_FLAG_INHERIT, 0);
+
+ startup_info.cb = sizeof(STARTUPINFOW);
+ startup_info.hStdInput = child_stdin_read;
+ startup_info.hStdOutput = child_stdout_write;
+ startup_info.hStdError = NULL;
+ startup_info.dwFlags |= STARTF_USESTDHANDLES;
+
+ sprintf(cmd, "find.exe %s", commandline);
+ CreateProcessA(NULL, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &startup_info, &process_info);
+ CloseHandle(child_stdin_read);
+ CloseHandle(child_stdout_write);
+
+ write_to_pipe(parent_stdin_write, input);
+ CloseHandle(parent_stdin_write);
+
+ child_output = read_from_pipe(parent_stdout_read);
+ CloseHandle(parent_stdout_read);
+
+ GetExitCodeProcess(process_info.hProcess, &exitcode);
+ CloseHandle(process_info.hProcess);
+ CloseHandle(process_info.hThread);
+
+ comparison = lstrcmpA(child_output, out_expected);
+
+ ok_(file, line)(comparison == 0, "\n#################### Expected:\n"
+ "%s\n"
+ "#################### But got:\n"
+ "%s\n"
+ "####################\n",
+ out_expected, child_output);
+ ok_(file, line)(exitcode == exitcode_expected, "Expected exitcode %d, got %d\n", exitcode_expected, exitcode);
+
+ heap_free(child_output);
+}
+
+static void test_errors(void)
+{
+ run_find("", "", "FIND: Parameter format not correct\r\n", 2);
+ todo_wine
+ run_find("test", "", "FIND: Parameter format not correct\r\n", 2);
+ todo_wine
+ run_find("\"test", "", "FIND: Parameter format not correct\r\n", 2);
+ run_find("\"test\" /XYZ", "", "FIND: Invalid switch\r\n", 2);
+}
+
+static void test_singleline_without_switches(void)
+{
+ run_find("\"\"", "test", "", 1);
+ run_find("\"test\"", "", "", 1);
+ run_find("\"test\"", "test", "test\r\n", 0);
+ run_find("\"test\"", "test2", "test2\r\n", 0);
+ run_find("\"test2\"", "test", "", 1);
+}
+
+START_TEST(find)
+{
+ if (PRIMARYLANGID(GetUserDefaultUILanguage()) != LANG_ENGLISH)
+ {
+ skip("Tests only work with english locale.\n");
+ return;
+ }
+
+ test_errors();
+ test_singleline_without_switches();
+}
--
2.17.1
2
3
Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com>
---
Fixes https://bugs.winehq.org/show_bug.cgi?id=45346
Although this patch fixes the bug in question, Zeb and I would like to
know: Since all exported Windows API functions support hotpatching,[1]
why do we add __attribute__((__ms_hook_prologue__)) attribute to
functions ad hoc instead of making it part of the definitions of
__stdcall and __cdecl in windef.h?
[1] https://blogs.msdn.microsoft.com/oldnewthing/20110921-00/?p=9583
---
dlls/gdi32/dib.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/gdi32/dib.c b/dlls/gdi32/dib.c
index c7dcdb122c..1312bf0533 100644
--- a/dlls/gdi32/dib.c
+++ b/dlls/gdi32/dib.c
@@ -1208,7 +1208,7 @@ BITMAPINFO *copy_packed_dib( const BITMAPINFO *src_info, UINT usage )
* Success: Number of scan lines copied from bitmap
* Failure: 0
*/
-INT WINAPI GetDIBits(
+INT WINAPI DECLSPEC_HOTPATCH GetDIBits(
HDC hdc, /* [in] Handle to device context */
HBITMAP hbitmap, /* [in] Handle to bitmap */
UINT startscan, /* [in] First scan line to set in dest bitmap */
--
2.18.0
5
6
From: Józef Kucia <jkucia(a)codeweavers.com>
Signed-off-by: Józef Kucia <jkucia(a)codeweavers.com>
---
tests/d3d12.c | 80 ++++++++++++++++++++++++------------------------
tests/vkd3d_d3d12_test.h | 1 -
2 files changed, 40 insertions(+), 41 deletions(-)
diff --git a/tests/d3d12.c b/tests/d3d12.c
index 217b4368a6b2..6128a402d3a6 100644
--- a/tests/d3d12.c
+++ b/tests/d3d12.c
@@ -8552,8 +8552,8 @@ static void test_texture(void)
for (i = 0; i < ARRAY_SIZE(tests); ++i)
{
- texture = create_texture(context.device,
- tests[i].width, tests[i].height, tests[i].format, D3D12_RESOURCE_STATE_COPY_DEST);
+ texture = create_default_texture(context.device,
+ tests[i].width, tests[i].height, tests[i].format, 0, D3D12_RESOURCE_STATE_COPY_DEST);
upload_texture_data(texture, &tests[i].data, 1, queue, command_list);
reset_command_list(command_list, context.allocator);
@@ -8773,8 +8773,8 @@ static void test_gather(void)
cpu_handle = ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(heap);
gpu_handle = ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(heap);
- texture = create_texture(context.device, 4, 4, DXGI_FORMAT_R32G32B32A32_FLOAT,
- D3D12_RESOURCE_STATE_COPY_DEST);
+ texture = create_default_texture(context.device, 4, 4, DXGI_FORMAT_R32G32B32A32_FLOAT,
+ 0, D3D12_RESOURCE_STATE_COPY_DEST);
ID3D12Device_CreateShaderResourceView(context.device, texture, NULL, cpu_handle);
upload_texture_data(texture, &resource_data, 1, queue, command_list);
reset_command_list(command_list, context.allocator);
@@ -9412,8 +9412,8 @@ static void test_descriptor_tables(void)
for (i = 0; i < ARRAY_SIZE(textures); ++i)
{
- textures[i] = create_texture(context.device,
- 1, 1, DXGI_FORMAT_R8G8B8A8_UNORM, D3D12_RESOURCE_STATE_COPY_DEST);
+ textures[i] = create_default_texture(context.device,
+ 1, 1, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D12_RESOURCE_STATE_COPY_DEST);
data.pData = &texture_data[i];
data.RowPitch = sizeof(texture_data[i]);
data.SlicePitch = data.RowPitch;
@@ -9887,8 +9887,8 @@ static void test_update_descriptor_tables(void)
for (i = 0; i < ARRAY_SIZE(textures); ++i)
{
- textures[i] = create_texture(context.device, 1, 1, DXGI_FORMAT_R32_FLOAT,
- D3D12_RESOURCE_STATE_COPY_DEST);
+ textures[i] = create_default_texture(context.device, 1, 1, DXGI_FORMAT_R32_FLOAT,
+ 0, D3D12_RESOURCE_STATE_COPY_DEST);
data.pData = &texture_data[i];
data.RowPitch = sizeof(texture_data[i]);
data.SlicePitch = data.RowPitch;
@@ -10020,8 +10020,8 @@ static void test_update_descriptor_heap_after_closing_command_list(void)
cpu_heap = create_cpu_descriptor_heap(context.device, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, 1);
- red_texture = create_texture(context.device, 1, 1, DXGI_FORMAT_R8G8B8A8_UNORM,
- D3D12_RESOURCE_STATE_COPY_DEST);
+ red_texture = create_default_texture(context.device, 1, 1, DXGI_FORMAT_R8G8B8A8_UNORM,
+ 0, D3D12_RESOURCE_STATE_COPY_DEST);
texture_data.pData = red_data;
texture_data.RowPitch = sizeof(*red_data);
texture_data.SlicePitch = texture_data.RowPitch;
@@ -10030,8 +10030,8 @@ static void test_update_descriptor_heap_after_closing_command_list(void)
transition_resource_state(command_list, red_texture,
D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
- green_texture = create_texture(context.device, 1, 1, DXGI_FORMAT_R8G8B8A8_UNORM,
- D3D12_RESOURCE_STATE_COPY_DEST);
+ green_texture = create_default_texture(context.device, 1, 1, DXGI_FORMAT_R8G8B8A8_UNORM,
+ 0, D3D12_RESOURCE_STATE_COPY_DEST);
texture_data.pData = green_data;
upload_texture_data(green_texture, &texture_data, 1, queue, command_list);
reset_command_list(command_list, context.allocator);
@@ -10425,8 +10425,8 @@ static void test_update_compute_descriptor_tables(void)
transition_resource_state(command_list, input_buffers[4],
D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE);
- textures[0] = create_texture(context.device,
- 4, 4, DXGI_FORMAT_R32_UINT, D3D12_RESOURCE_STATE_COPY_DEST);
+ textures[0] = create_default_texture(context.device,
+ 4, 4, DXGI_FORMAT_R32_UINT, 0, D3D12_RESOURCE_STATE_COPY_DEST);
subresource_data.pData = texture0_data;
subresource_data.RowPitch = sizeof(*texture0_data);
subresource_data.SlicePitch = subresource_data.RowPitch;
@@ -10435,8 +10435,8 @@ static void test_update_compute_descriptor_tables(void)
transition_resource_state(command_list, textures[0],
D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE);
- textures[1] = create_texture(context.device,
- 4, 4, DXGI_FORMAT_R32_UINT, D3D12_RESOURCE_STATE_COPY_DEST);
+ textures[1] = create_default_texture(context.device,
+ 4, 4, DXGI_FORMAT_R32_UINT, 0, D3D12_RESOURCE_STATE_COPY_DEST);
subresource_data.pData = texture1_data;
subresource_data.RowPitch = sizeof(*texture1_data);
subresource_data.SlicePitch = subresource_data.RowPitch;
@@ -10843,8 +10843,8 @@ static void test_copy_descriptors(void)
/* create SRVs */
cpu_handle = get_cpu_descriptor_handle(&context, cpu_heap, 10);
- t[0] = create_texture(context.device,
- 1, 1, DXGI_FORMAT_R32G32B32A32_FLOAT, D3D12_RESOURCE_STATE_COPY_DEST);
+ t[0] = create_default_texture(context.device,
+ 1, 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D12_RESOURCE_STATE_COPY_DEST);
data.pData = &t0_data;
data.RowPitch = sizeof(t0_data);
data.SlicePitch = data.RowPitch;
@@ -10853,8 +10853,8 @@ static void test_copy_descriptors(void)
transition_resource_state(command_list, t[0],
D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE);
- t[1] = create_texture(context.device,
- 1, 1, DXGI_FORMAT_R32_UINT, D3D12_RESOURCE_STATE_COPY_DEST);
+ t[1] = create_default_texture(context.device,
+ 1, 1, DXGI_FORMAT_R32_UINT, 0, D3D12_RESOURCE_STATE_COPY_DEST);
data.pData = &t1_data;
data.RowPitch = sizeof(t1_data);
data.SlicePitch = data.RowPitch;
@@ -10863,8 +10863,8 @@ static void test_copy_descriptors(void)
transition_resource_state(command_list, t[1],
D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE);
- t[2] = create_texture(context.device,
- 1, 1, DXGI_FORMAT_R32_UINT, D3D12_RESOURCE_STATE_COPY_DEST);
+ t[2] = create_default_texture(context.device,
+ 1, 1, DXGI_FORMAT_R32_UINT, 0, D3D12_RESOURCE_STATE_COPY_DEST);
data.pData = &t2_data;
data.RowPitch = sizeof(t2_data);
data.SlicePitch = data.RowPitch;
@@ -11231,8 +11231,8 @@ static void test_copy_descriptors_range_sizes(void)
green_handle = get_cpu_descriptor_handle(&context, cpu_heap, 0);
blue_handle = get_cpu_descriptor_handle(&context, cpu_heap, 1);
- green_texture = create_texture(context.device,
- 1, 1, DXGI_FORMAT_R32G32B32A32_FLOAT, D3D12_RESOURCE_STATE_COPY_DEST);
+ green_texture = create_default_texture(context.device,
+ 1, 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D12_RESOURCE_STATE_COPY_DEST);
data.pData = &green;
data.RowPitch = sizeof(green);
data.SlicePitch = data.RowPitch;
@@ -11242,8 +11242,8 @@ static void test_copy_descriptors_range_sizes(void)
D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
ID3D12Device_CreateShaderResourceView(device, green_texture, NULL, green_handle);
- blue_texture = create_texture(context.device,
- 1, 1, DXGI_FORMAT_R32G32B32A32_FLOAT, D3D12_RESOURCE_STATE_COPY_DEST);
+ blue_texture = create_default_texture(context.device,
+ 1, 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D12_RESOURCE_STATE_COPY_DEST);
data.pData = &blue;
data.RowPitch = sizeof(blue);
data.SlicePitch = data.RowPitch;
@@ -11544,8 +11544,8 @@ static void test_descriptors_visibility(void)
vs_raw_buffer = create_upload_buffer(device, sizeof(vs_buffer_data), vs_buffer_data);
ps_raw_buffer = create_upload_buffer(device, sizeof(ps_buffer_data), ps_buffer_data);
- vs_texture = create_texture(device,
- 1, 1, DXGI_FORMAT_R32G32B32A32_FLOAT, D3D12_RESOURCE_STATE_COPY_DEST);
+ vs_texture = create_default_texture(device,
+ 1, 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D12_RESOURCE_STATE_COPY_DEST);
data.pData = vs_texture_data;
data.RowPitch = sizeof(vs_texture_data);
data.SlicePitch = data.RowPitch;
@@ -11554,8 +11554,8 @@ static void test_descriptors_visibility(void)
transition_resource_state(command_list, vs_texture,
D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE);
- ps_texture = create_texture(device,
- 1, 1, DXGI_FORMAT_R32G32B32A32_FLOAT, D3D12_RESOURCE_STATE_COPY_DEST);
+ ps_texture = create_default_texture(device,
+ 1, 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D12_RESOURCE_STATE_COPY_DEST);
data.pData = ps_texture_data;
data.RowPitch = sizeof(ps_texture_data);
data.SlicePitch = data.RowPitch;
@@ -16308,16 +16308,16 @@ static void test_copy_texture_region(void)
for (i = 0; i < ARRAY_SIZE(resource_states); ++i)
{
- src_texture = create_texture(device, 4, 4, DXGI_FORMAT_R8G8B8A8_UNORM,
- D3D12_RESOURCE_STATE_COPY_DEST);
+ src_texture = create_default_texture(device, 4, 4, DXGI_FORMAT_R8G8B8A8_UNORM,
+ 0, D3D12_RESOURCE_STATE_COPY_DEST);
texture_data.pData = bitmap_data;
texture_data.RowPitch = 4 * sizeof(*bitmap_data);
texture_data.SlicePitch = texture_data.RowPitch * 4;
upload_texture_data(src_texture, &texture_data, 1, queue, command_list);
reset_command_list(command_list, context.allocator);
- dst_texture = create_texture(device, 4, 4, DXGI_FORMAT_R8G8B8A8_UNORM,
- D3D12_RESOURCE_STATE_COPY_DEST);
+ dst_texture = create_default_texture(device, 4, 4, DXGI_FORMAT_R8G8B8A8_UNORM,
+ 0, D3D12_RESOURCE_STATE_COPY_DEST);
texture_data.pData = clear_data;
texture_data.RowPitch = 4 * sizeof(*bitmap_data);
texture_data.SlicePitch = texture_data.RowPitch * 4;
@@ -16374,8 +16374,8 @@ static void test_copy_texture_region(void)
transition_sub_resource_state(command_list, ds.texture, 0,
D3D12_RESOURCE_STATE_DEPTH_WRITE, resource_states[i % ARRAY_SIZE(resource_states)]);
- dst_texture = create_texture(device, 32, 32, DXGI_FORMAT_R32_FLOAT,
- D3D12_RESOURCE_STATE_COPY_DEST);
+ dst_texture = create_default_texture(device, 32, 32, DXGI_FORMAT_R32_FLOAT,
+ 0, D3D12_RESOURCE_STATE_COPY_DEST);
ID3D12Device_CreateShaderResourceView(device, dst_texture, NULL,
ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(heap));
@@ -16631,8 +16631,8 @@ static void test_separate_bindings(void)
transition_resource_state(command_list, ps_raw_uav_buffer,
D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_UNORDERED_ACCESS);
- cs_textures[0] = create_texture(device,
- 1, 1, DXGI_FORMAT_R32G32B32A32_FLOAT, D3D12_RESOURCE_STATE_COPY_DEST);
+ cs_textures[0] = create_default_texture(device,
+ 1, 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D12_RESOURCE_STATE_COPY_DEST);
data.pData = &cs_data;
data.RowPitch = sizeof(cs_data);
data.SlicePitch = data.RowPitch;
@@ -16650,8 +16650,8 @@ static void test_separate_bindings(void)
transition_resource_state(command_list, cs_textures[1],
D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_UNORDERED_ACCESS);
- ps_textures[0] = create_texture(device,
- 1, 1, DXGI_FORMAT_R32G32B32A32_FLOAT, D3D12_RESOURCE_STATE_COPY_DEST);
+ ps_textures[0] = create_default_texture(device,
+ 1, 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D12_RESOURCE_STATE_COPY_DEST);
data.pData = &ps_data;
data.RowPitch = sizeof(ps_data);
data.SlicePitch = data.RowPitch;
diff --git a/tests/vkd3d_d3d12_test.h b/tests/vkd3d_d3d12_test.h
index 2ebb58f997b3..67e4ddb3aae2 100644
--- a/tests/vkd3d_d3d12_test.h
+++ b/tests/vkd3d_d3d12_test.h
@@ -319,7 +319,6 @@ static void check_sub_resource_uint_(unsigned int line, ID3D12Resource *texture,
}
#define create_default_texture(a, b, c, d, e, f) create_default_texture2d_(__LINE__, a, b, c, 1, 1, d, e, f)
-#define create_texture(a, b, c, d, e) create_default_texture(a, b, c, d, 0, e)
#define create_default_texture2d(a, b, c, d, e, f, g, h) create_default_texture2d_(__LINE__, a, b, c, d, e, f, g, h)
static ID3D12Resource *create_default_texture2d_(unsigned int line, ID3D12Device *device,
unsigned int width, unsigned int height, unsigned int array_size, unsigned int miplevel_count,
--
2.16.4
2
1
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/dwrite/analyzer.c | 4 +
dlls/dwrite/bracket.c | 2 +-
dlls/dwrite/linebreak.c | 214 +++++++++++++-------------
dlls/dwrite/mirror.c | 2 +-
dlls/dwrite/scripts.c | 308 +++++++++++++++++++------------------
dlls/dwrite/scripts.h | 8 +-
dlls/gdi32/vertical.c | 2 +-
dlls/usp10/bracket.c | 2 +-
dlls/usp10/indicsyllable.c | 86 +++++------
dlls/usp10/linebreak.c | 214 +++++++++++++-------------
dlls/usp10/mirror.c | 2 +-
dlls/usp10/shaping.c | 116 +++++++-------
dlls/wineps.drv/vertical.c | 2 +-
libs/port/compose.c | 2 +-
libs/port/decompose.c | 2 +-
libs/port/digitmap.c | 2 +-
libs/wine/casemap.c | 2 +-
libs/wine/wctype.c | 38 ++---
tools/make_unicode | 9 +-
19 files changed, 514 insertions(+), 503 deletions(-)
diff --git a/dlls/dwrite/analyzer.c b/dlls/dwrite/analyzer.c
index 8d553c6d56..19214ee392 100644
--- a/dlls/dwrite/analyzer.c
+++ b/dlls/dwrite/analyzer.c
@@ -184,6 +184,10 @@ static const struct dwritescript_properties dwritescripts_properties[Script_Last
{ /* Osge */ { 0x6567734f, 219, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('o','s','g','e') },
{ /* Sgnw */ { 0x776e6753, 95, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('s','g','n','w') },
{ /* Tang */ { 0x676e6154, 520, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('t','a','n','g') },
+ { /* Gonm */ { 0x6d6e6f47, 313, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('g','o','n','m') },
+ { /* Nshu */ { 0x7568734e, 499, 1, 0x0020, 0, 0, 1, 1, 0, 0, 0 }, _OT('n','s','h','u') },
+ { /* Soyo */ { 0x6f796f53, 329, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('s','o','y','o') },
+ { /* Zanb */ { 0x626e615a, 339, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('z','a','n','b') },
};
#undef _OT
diff --git a/dlls/dwrite/bracket.c b/dlls/dwrite/bracket.c
index 1509d572c9..16df6381a6 100644
--- a/dlls/dwrite/bracket.c
+++ b/dlls/dwrite/bracket.c
@@ -1,5 +1,5 @@
/* Unicode Bidirectional Bracket table */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/BidiBrackets.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/BidiBrackets.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/dlls/dwrite/linebreak.c b/dlls/dwrite/linebreak.c
index 56bde66e9e..cd2ca64952 100644
--- a/dlls/dwrite/linebreak.c
+++ b/dlls/dwrite/linebreak.c
@@ -1,10 +1,10 @@
/* Unicode Line Break Properties */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/LineBreak.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/LineBreak.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
-const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
+const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7264] =
{
/* level 1 offsets */
0x0100, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
@@ -56,22 +56,22 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0790, 0x07a0, 0x07b0,
0x07c0, 0x07d0, 0x05b0, 0x0580, 0x07e0, 0x05b0, 0x05b0, 0x05b0,
0x05b0, 0x05b0, 0x07f0, 0x0800, 0x07b0, 0x05b0, 0x0760, 0x0810,
- 0x05b0, 0x0820, 0x0830, 0x0840, 0x05b0, 0x0850, 0x0860, 0x0870,
- 0x0870, 0x0870, 0x05b0, 0x0880, 0x0870, 0x0890, 0x08a0, 0x0580,
- 0x08b0, 0x05b0, 0x05b0, 0x08c0, 0x0580, 0x08d0, 0x08e0, 0x05b0,
- 0x08f0, 0x0900, 0x0910, 0x0920, 0x0930, 0x0940, 0x0950, 0x0960,
- 0x0970, 0x0900, 0x0910, 0x0980, 0x0990, 0x09a0, 0x09b0, 0x09c0,
- 0x09d0, 0x0690, 0x0910, 0x09e0, 0x09f0, 0x0a00, 0x0950, 0x0a10,
- 0x0a20, 0x0900, 0x0910, 0x09e0, 0x0a30, 0x0a40, 0x0950, 0x0a50,
- 0x0a60, 0x0a70, 0x0a80, 0x0a90, 0x0aa0, 0x0ab0, 0x09b0, 0x0ac0,
- 0x0ad0, 0x0ae0, 0x0910, 0x0af0, 0x0b00, 0x0b10, 0x0950, 0x0b20,
- 0x0b30, 0x0ae0, 0x0910, 0x0b40, 0x0b00, 0x0b50, 0x0950, 0x0b60,
- 0x0ad0, 0x0ae0, 0x05b0, 0x0b70, 0x0b80, 0x0b90, 0x0950, 0x0ba0,
- 0x0bb0, 0x0bc0, 0x05b0, 0x0bd0, 0x0be0, 0x0bf0, 0x09b0, 0x0c00,
- 0x0c10, 0x0c20, 0x0c20, 0x0c30, 0x0c40, 0x0c50, 0x0870, 0x0870,
- 0x0c60, 0x0c70, 0x0c80, 0x0c90, 0x0ca0, 0x0cb0, 0x0870, 0x0870,
+ 0x05b0, 0x0820, 0x0830, 0x0840, 0x05b0, 0x0850, 0x0860, 0x0860,
+ 0x0860, 0x0860, 0x05b0, 0x0870, 0x0860, 0x0880, 0x0890, 0x0580,
+ 0x08a0, 0x05b0, 0x05b0, 0x08b0, 0x0580, 0x08c0, 0x08d0, 0x05b0,
+ 0x08e0, 0x08f0, 0x0900, 0x0910, 0x0920, 0x0930, 0x0940, 0x0950,
+ 0x0960, 0x08f0, 0x0900, 0x0970, 0x0980, 0x0990, 0x09a0, 0x09b0,
+ 0x09c0, 0x0690, 0x0900, 0x09d0, 0x09e0, 0x09f0, 0x0940, 0x0a00,
+ 0x0a10, 0x08f0, 0x0900, 0x09d0, 0x0a20, 0x0a30, 0x0940, 0x0a40,
+ 0x0a50, 0x0a60, 0x0a70, 0x0a80, 0x0a90, 0x0aa0, 0x09a0, 0x0ab0,
+ 0x0ac0, 0x0ad0, 0x0900, 0x0ae0, 0x0af0, 0x0b00, 0x0940, 0x0b10,
+ 0x0b20, 0x0ad0, 0x0900, 0x0b30, 0x0af0, 0x0b40, 0x0940, 0x0b50,
+ 0x0b60, 0x0ad0, 0x05b0, 0x0b70, 0x0b80, 0x0b90, 0x0940, 0x0ba0,
+ 0x0bb0, 0x0bc0, 0x05b0, 0x0bd0, 0x0be0, 0x0bf0, 0x09a0, 0x0c00,
+ 0x0c10, 0x0c20, 0x0c20, 0x0c30, 0x0c40, 0x0c50, 0x0860, 0x0860,
+ 0x0c60, 0x0c70, 0x0c80, 0x0c90, 0x0ca0, 0x0cb0, 0x0860, 0x0860,
0x0cc0, 0x0cd0, 0x07b0, 0x0ce0, 0x0cf0, 0x05b0, 0x0d00, 0x0d10,
- 0x0d20, 0x0d30, 0x0580, 0x0d40, 0x0d50, 0x0d60, 0x0870, 0x0870,
+ 0x0d20, 0x0d30, 0x0580, 0x0d40, 0x0d50, 0x0d60, 0x0860, 0x0860,
0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x0d70, 0x0c20, 0x0c20, 0x0c20,
0x0c20, 0x0d80, 0x05b0, 0x05b0, 0x0d90, 0x05b0, 0x05b0, 0x05b0,
0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0db0, 0x0db0,
@@ -86,16 +86,16 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0e70, 0x0e80, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0e90, 0x0ea0,
0x0eb0, 0x0ec0, 0x05b0, 0x0ed0, 0x05b0, 0x0ee0, 0x0eb0, 0x0ef0,
0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x0f00, 0x0f10, 0x0e50,
- 0x0f20, 0x0f10, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0a50,
+ 0x0f20, 0x0f10, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0a40,
0x0f30, 0x05b0, 0x0f40, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0f50,
0x05b0, 0x0840, 0x0f60, 0x0f60, 0x0f70, 0x0c20, 0x0f80, 0x0f90,
0x0c20, 0x0c20, 0x0fa0, 0x0c20, 0x0fb0, 0x0fc0, 0x05b0, 0x05b0,
0x05b0, 0x0fd0, 0x0c20, 0x0c20, 0x0c20, 0x0fe0, 0x0c20, 0x0ff0,
- 0x0f10, 0x0f10, 0x0f80, 0x1000, 0x0870, 0x0870, 0x0870, 0x0870,
+ 0x0f10, 0x0f10, 0x0f80, 0x1000, 0x0860, 0x0860, 0x0860, 0x0860,
0x1010, 0x05b0, 0x05b0, 0x1020, 0x1030, 0x1040, 0x1050, 0x1060,
0x1070, 0x05b0, 0x1080, 0x07b0, 0x05b0, 0x05b0, 0x07f0, 0x1090,
0x05b0, 0x05b0, 0x1020, 0x10a0, 0x10b0, 0x07b0, 0x05b0, 0x10c0,
- 0x0ea0, 0x0870, 0x0870, 0x0870, 0x0a50, 0x10d0, 0x10e0, 0x10f0,
+ 0x0ea0, 0x0860, 0x0860, 0x0860, 0x0a40, 0x10d0, 0x10e0, 0x10f0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0580, 0x0580, 0x0580, 0x1100,
0x05b0, 0x0e60, 0x05b0, 0x05b0, 0x0e60, 0x1110, 0x05b0, 0x1120,
@@ -108,80 +108,80 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x1320, 0x1330, 0x1340, 0x1350, 0x05b0, 0x05b0, 0x1360, 0x05b0,
0x1370, 0x1380, 0x1390, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x13a0,
- 0x05b0, 0x05b0, 0x13b0, 0x0870, 0x0860, 0x0870, 0x13c0, 0x13c0,
- 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13d0,
- 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x1270, 0x13c0, 0x13c0, 0x13e0,
- 0x13c0, 0x13f0, 0x1400, 0x1410, 0x1420, 0x1430, 0x1440, 0x05b0,
- 0x1450, 0x1460, 0x05b0, 0x1470, 0x1480, 0x05b0, 0x1490, 0x14a0,
- 0x05b0, 0x14b0, 0x05b0, 0x14c0, 0x14d0, 0x14e0, 0x14f0, 0x1500,
- 0x1510, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1520, 0x1530, 0x1540,
- 0x13c0, 0x1550, 0x05b0, 0x05b0, 0x1560, 0x05b0, 0x1570, 0x05b0,
+ 0x05b0, 0x05b0, 0x13b0, 0x0860, 0x13c0, 0x0860, 0x13d0, 0x13d0,
+ 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13e0,
+ 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x1270, 0x13d0, 0x13d0, 0x13f0,
+ 0x13d0, 0x1400, 0x1410, 0x1420, 0x1430, 0x1440, 0x1450, 0x05b0,
+ 0x1460, 0x1470, 0x05b0, 0x1480, 0x1490, 0x05b0, 0x14a0, 0x14b0,
+ 0x05b0, 0x14c0, 0x05b0, 0x14d0, 0x14e0, 0x14f0, 0x1500, 0x1510,
+ 0x1520, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1530, 0x1540, 0x1550,
+ 0x13d0, 0x1560, 0x05b0, 0x05b0, 0x1570, 0x05b0, 0x1580, 0x05b0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
- 0x1580, 0x1590, 0x05b0, 0x05b0, 0x05b0, 0x1370, 0x05b0, 0x15a0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x15b0, 0x05b0, 0x15c0,
- 0x05b0, 0x15d0, 0x05b0, 0x15e0, 0x0910, 0x15f0, 0x1600, 0x0870,
+ 0x1590, 0x15a0, 0x05b0, 0x05b0, 0x05b0, 0x1370, 0x05b0, 0x15b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x15c0, 0x05b0, 0x15d0,
+ 0x05b0, 0x15e0, 0x05b0, 0x15f0, 0x0900, 0x1600, 0x1610, 0x0860,
0x05b0, 0x05b0, 0x0840, 0x05b0, 0x05b0, 0x0840, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1610, 0x1620,
- 0x05b0, 0x05b0, 0x0d90, 0x05b0, 0x05b0, 0x05b0, 0x1630, 0x1640,
- 0x05b0, 0x13b0, 0x1650, 0x1650, 0x1650, 0x1650, 0x0580, 0x0580,
- 0x1660, 0x1670, 0x1680, 0x1690, 0x16a0, 0x0870, 0x0870, 0x0870,
- 0x16b0, 0x16c0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16d0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16e0, 0x0870, 0x16f0,
- 0x1700, 0x1710, 0x1720, 0x1730, 0x1740, 0x16b0, 0x1750, 0x16b0,
- 0x1760, 0x1770, 0x1780, 0x16b0, 0x1750, 0x16b0, 0x1760, 0x1790,
- 0x17a0, 0x16b0, 0x17b0, 0x17c0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x17b0, 0x16b0, 0x16b0, 0x17d0, 0x16b0, 0x16b0, 0x16d0, 0x17e0,
- 0x16b0, 0x17b0, 0x16b0, 0x16b0, 0x17f0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x17b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
- 0x16b0, 0x1800, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x1810, 0x16b0, 0x16b0, 0x16b0, 0x1820, 0x05b0, 0x05b0, 0x10c0,
- 0x1830, 0x05b0, 0x1840, 0x0870, 0x05b0, 0x05b0, 0x1610, 0x1850,
- 0x05b0, 0x1860, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1870,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1620, 0x1630,
+ 0x05b0, 0x05b0, 0x0d90, 0x05b0, 0x05b0, 0x05b0, 0x1640, 0x1650,
+ 0x05b0, 0x13b0, 0x1660, 0x1660, 0x1660, 0x1660, 0x0580, 0x0580,
+ 0x1670, 0x1680, 0x1690, 0x16a0, 0x16b0, 0x0860, 0x0860, 0x0860,
+ 0x16c0, 0x16d0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16e0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16f0, 0x0860, 0x1700,
+ 0x1710, 0x1720, 0x1730, 0x1740, 0x1750, 0x16c0, 0x1760, 0x16c0,
+ 0x1770, 0x1780, 0x1790, 0x16c0, 0x1760, 0x16c0, 0x1770, 0x17a0,
+ 0x17b0, 0x16c0, 0x17c0, 0x17d0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x17e0, 0x16c0, 0x16c0, 0x17f0, 0x16c0, 0x16c0, 0x16e0, 0x1800,
+ 0x16c0, 0x17e0, 0x16c0, 0x16c0, 0x1810, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x17e0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
+ 0x16c0, 0x1820, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x1830, 0x16c0, 0x16c0, 0x16c0, 0x1840, 0x05b0, 0x05b0, 0x10c0,
+ 0x1850, 0x05b0, 0x1860, 0x0860, 0x05b0, 0x05b0, 0x1620, 0x1870,
+ 0x05b0, 0x1880, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1890,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x0840, 0x0a50, 0x0870, 0x0870, 0x0870, 0x1880,
- 0x1890, 0x05b0, 0x18a0, 0x18b0, 0x05b0, 0x05b0, 0x05b0, 0x18c0,
- 0x18d0, 0x05b0, 0x05b0, 0x1020, 0x18e0, 0x0f10, 0x0580, 0x18f0,
- 0x07b0, 0x05b0, 0x1900, 0x05b0, 0x1910, 0x1920, 0x0da0, 0x1930,
- 0x08b0, 0x05b0, 0x05b0, 0x1940, 0x1950, 0x1960, 0x0c20, 0x1970,
- 0x05b0, 0x05b0, 0x1980, 0x1990, 0x19a0, 0x19b0, 0x0c20, 0x0c20,
- 0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x19c0, 0x19d0, 0x0760, 0x19e0,
- 0x19f0, 0x1a00, 0x1650, 0x05b0, 0x05b0, 0x05b0, 0x0f50, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1a10, 0x0f10,
- 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20,
- 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30,
- 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40,
- 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50,
- 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40,
- 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60,
- 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40,
- 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20,
- 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30,
- 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40,
- 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50,
- 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40,
- 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60,
- 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40,
- 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40,
- 0x1a50, 0x1a40, 0x1a70, 0x0db0, 0x1a80, 0x0dd0, 0x0dd0, 0x1a90,
- 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0,
- 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0,
- 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
- 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
- 0x13b0, 0x1ab0, 0x1ac0, 0x1ad0, 0x1ae0, 0x05b0, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1af0, 0x1b00, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x1b10, 0x0870, 0x05b0, 0x05b0, 0x05b0,
- 0x05b0, 0x1b20, 0x05b0, 0x05b0, 0x0a50, 0x0870, 0x0870, 0x1b30,
- 0x0580, 0x1b40, 0x0580, 0x1b50, 0x1b60, 0x1b70, 0x1b80, 0x1130,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1b90,
- 0x1ba0, 0x1bb0, 0x16b0, 0x1bc0, 0x16b0, 0x1bd0, 0x1be0, 0x1bf0,
- 0x16b0, 0x1c00, 0x16b0, 0x17b0, 0x1c10, 0x1c20, 0x1c30, 0x1c40,
+ 0x05b0, 0x05b0, 0x0840, 0x0a40, 0x0860, 0x0860, 0x0860, 0x18a0,
+ 0x18b0, 0x05b0, 0x18c0, 0x18d0, 0x05b0, 0x05b0, 0x05b0, 0x18e0,
+ 0x18f0, 0x05b0, 0x05b0, 0x1020, 0x1900, 0x0f10, 0x0580, 0x1910,
+ 0x07b0, 0x05b0, 0x1920, 0x05b0, 0x1930, 0x1940, 0x0da0, 0x1950,
+ 0x08a0, 0x05b0, 0x05b0, 0x1960, 0x1970, 0x1980, 0x0c20, 0x1990,
+ 0x05b0, 0x05b0, 0x19a0, 0x19b0, 0x19c0, 0x19d0, 0x0c20, 0x0c20,
+ 0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x19e0, 0x19f0, 0x0760, 0x1a00,
+ 0x1a10, 0x1a20, 0x1660, 0x05b0, 0x05b0, 0x05b0, 0x0f50, 0x05b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1a30, 0x0f10,
+ 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40,
+ 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50,
+ 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60,
+ 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70,
+ 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60,
+ 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80,
+ 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60,
+ 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40,
+ 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50,
+ 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60,
+ 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70,
+ 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60,
+ 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80,
+ 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60,
+ 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60,
+ 0x1a70, 0x1a60, 0x1a90, 0x0db0, 0x1aa0, 0x0dd0, 0x0dd0, 0x1ab0,
+ 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0,
+ 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0,
+ 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860,
+ 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860,
+ 0x13b0, 0x1ad0, 0x1ae0, 0x1af0, 0x1b00, 0x05b0, 0x05b0, 0x05b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1600, 0x1b10, 0x05b0, 0x05b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x1b20, 0x0860, 0x05b0, 0x05b0, 0x05b0,
+ 0x05b0, 0x1b30, 0x05b0, 0x05b0, 0x0a40, 0x0860, 0x0860, 0x1b40,
+ 0x0580, 0x1b50, 0x0580, 0x1b60, 0x1b70, 0x1b80, 0x1b90, 0x1130,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1ba0,
+ 0x1bb0, 0x1bc0, 0x16c0, 0x1bd0, 0x16c0, 0x1be0, 0x1bf0, 0x1c00,
+ 0x16c0, 0x1c10, 0x16c0, 0x17e0, 0x1c20, 0x1c30, 0x1c40, 0x1c50,
/* values */
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x0004, 0x0022, 0x0003, 0x0001, 0x0001, 0x0002, 0x0004, 0x0004,
@@ -277,8 +277,6 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x001d, 0x0011,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d,
@@ -310,7 +308,7 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x0004, 0x0004, 0x0011, 0x0011, 0x001c, 0x001c,
0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
0x001d, 0x001d, 0x001b, 0x001b, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001b, 0x001d, 0x001a, 0x001d, 0x001d, 0x0011, 0x0011,
+ 0x001d, 0x001b, 0x001d, 0x001a, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d,
0x001d, 0x0011, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d, 0x0011,
@@ -332,7 +330,7 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x001d, 0x001a, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x001d, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
+ 0x0011, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d,
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x0004,
@@ -375,8 +373,10 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x0011,
0x0011, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x0004, 0x0004, 0x001d, 0x0004, 0x0004,
+ 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d, 0x0004, 0x0004,
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0004, 0x0004,
0x0004, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d,
0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x0004,
@@ -551,10 +551,10 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x0004, 0x001d, 0x001d, 0x001d, 0x001d, 0x0004, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d, 0x0004,
+ 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d, 0x0011,
0x0004, 0x0004, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
- 0x0004, 0x0004, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
+ 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x0011, 0x001d, 0x0011, 0x001d, 0x0011, 0x001d, 0x0011, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
@@ -638,9 +638,11 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x0012, 0x0013, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001e, 0x001e, 0x001e, 0x001e, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
@@ -711,7 +713,7 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d,
@@ -733,8 +735,8 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0012, 0x0013, 0x0022, 0x0022, 0x0022, 0x0022, 0x0017, 0x001d,
0x0022, 0x0022, 0x001d, 0x0022, 0x0022, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x0025, 0x0025, 0x0022, 0x0022, 0x0022, 0x001d,
- 0x0022, 0x0022, 0x0012, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
- 0x0022, 0x0022, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0022, 0x0022, 0x0012, 0x0022, 0x0022, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
@@ -768,10 +770,12 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0011,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0011, 0x0011,
0x0011, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0011,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
@@ -871,8 +875,6 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0011, 0x0026, 0x0011,
0x0026, 0x0026, 0x0011, 0x0026, 0x0026, 0x0011, 0x0026, 0x0026,
0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
- 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
diff --git a/dlls/dwrite/mirror.c b/dlls/dwrite/mirror.c
index 23dab536c4..daadfa8054 100644
--- a/dlls/dwrite/mirror.c
+++ b/dlls/dwrite/mirror.c
@@ -1,5 +1,5 @@
/* Unicode BiDi mirroring */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/BidiMirroring.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/BidiMirroring.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/dlls/dwrite/scripts.c b/dlls/dwrite/scripts.c
index ce139f2932..5d7846afdf 100644
--- a/dlls/dwrite/scripts.c
+++ b/dlls/dwrite/scripts.c
@@ -1,63 +1,63 @@
/* Unicode Script IDs */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/Scripts.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/Scripts.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
-const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
+const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6880] =
{
/* level 1 offsets */
0x0100, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
0x0180, 0x0190, 0x01a0, 0x01b0, 0x01c0, 0x01d0, 0x01e0, 0x01f0,
0x0200, 0x0210, 0x0220, 0x0230, 0x0240, 0x0240, 0x0250, 0x0260,
0x0270, 0x0280, 0x0290, 0x02a0, 0x02b0, 0x02c0, 0x0110, 0x02d0,
- 0x02e0, 0x02f0, 0x0300, 0x0300, 0x0310, 0x0300, 0x0300, 0x0300,
- 0x0320, 0x0300, 0x0300, 0x0330, 0x0340, 0x0350, 0x0360, 0x0370,
- 0x0380, 0x0390, 0x03a0, 0x03b0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03d0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03e0,
- 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x0400, 0x0410, 0x0420, 0x0430,
- 0x0440, 0x0450, 0x0460, 0x0470, 0x0210, 0x0210, 0x0210, 0x0210,
+ 0x02e0, 0x02f0, 0x0300, 0x0310, 0x0320, 0x0300, 0x0300, 0x0300,
+ 0x0330, 0x0300, 0x0300, 0x0340, 0x0350, 0x0360, 0x0370, 0x0380,
+ 0x0390, 0x03a0, 0x03b0, 0x03c0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03e0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03f0,
+ 0x0400, 0x0400, 0x0400, 0x0400, 0x0410, 0x0420, 0x0430, 0x0440,
+ 0x0450, 0x0460, 0x0470, 0x0480, 0x0210, 0x0210, 0x0210, 0x0210,
0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210,
0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210,
0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210,
0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210,
- 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0480,
- 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490,
- 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490,
- 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490,
- 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490,
- 0x0490, 0x03c0, 0x04a0, 0x04b0, 0x04c0, 0x04d0, 0x04e0, 0x04f0,
+ 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0490,
+ 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0,
+ 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0,
+ 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0,
+ 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0,
+ 0x04a0, 0x03d0, 0x04b0, 0x04c0, 0x04d0, 0x04e0, 0x04f0, 0x0500,
/* level 2 offsets */
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0510, 0x0520, 0x0510, 0x0520,
- 0x0500, 0x0500, 0x0530, 0x0530, 0x0540, 0x0550, 0x0540, 0x0550,
- 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540,
- 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540,
- 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540,
- 0x0540, 0x0540, 0x0540, 0x0560, 0x0500, 0x0500, 0x0570, 0x0500,
- 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0590,
- 0x05a0, 0x05b0, 0x05c0, 0x05b0, 0x05b0, 0x05b0, 0x05d0, 0x05b0,
- 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e0,
- 0x05f0, 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e0,
- 0x05e0, 0x05e0, 0x05e0, 0x0600, 0x0610, 0x0620, 0x0600, 0x0610,
- 0x0630, 0x0640, 0x0650, 0x0650, 0x0660, 0x0650, 0x0670, 0x0680,
- 0x0690, 0x06a0, 0x06b0, 0x06b0, 0x06c0, 0x06d0, 0x06b0, 0x06e0,
- 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06f0, 0x06b0, 0x06b0,
- 0x0700, 0x0710, 0x0710, 0x0710, 0x0720, 0x06b0, 0x06b0, 0x06b0,
- 0x0730, 0x0730, 0x0730, 0x0740, 0x0750, 0x0750, 0x0750, 0x0760,
- 0x0770, 0x0770, 0x0780, 0x0790, 0x07a0, 0x07b0, 0x07c0, 0x07d0,
- 0x07d0, 0x07d0, 0x06b0, 0x07e0, 0x07d0, 0x07f0, 0x0800, 0x06b0,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0520, 0x0530, 0x0520, 0x0530,
+ 0x0510, 0x0510, 0x0540, 0x0540, 0x0550, 0x0560, 0x0550, 0x0560,
+ 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550,
+ 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550,
+ 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550,
+ 0x0550, 0x0550, 0x0550, 0x0570, 0x0510, 0x0510, 0x0580, 0x0510,
+ 0x0590, 0x0590, 0x0590, 0x0590, 0x0590, 0x0590, 0x0590, 0x05a0,
+ 0x05b0, 0x05c0, 0x05d0, 0x05c0, 0x05c0, 0x05c0, 0x05e0, 0x05c0,
+ 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0,
+ 0x0600, 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0,
+ 0x05f0, 0x05f0, 0x05f0, 0x0610, 0x0620, 0x0630, 0x0610, 0x0620,
+ 0x0640, 0x0650, 0x0660, 0x0660, 0x0670, 0x0660, 0x0680, 0x0690,
+ 0x06a0, 0x06b0, 0x06c0, 0x06c0, 0x06d0, 0x06e0, 0x06c0, 0x06f0,
+ 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x0700, 0x06c0, 0x06c0,
+ 0x0710, 0x0720, 0x0720, 0x0720, 0x0730, 0x06c0, 0x06c0, 0x06c0,
+ 0x0740, 0x0740, 0x0740, 0x0750, 0x0760, 0x0760, 0x0760, 0x0770,
+ 0x0780, 0x0780, 0x0790, 0x07a0, 0x07b0, 0x07c0, 0x07d0, 0x07d0,
+ 0x07d0, 0x07d0, 0x06c0, 0x07e0, 0x07d0, 0x07f0, 0x0800, 0x06c0,
0x0810, 0x0810, 0x0810, 0x0810, 0x0810, 0x0820, 0x0830, 0x0810,
0x0840, 0x0850, 0x0860, 0x0870, 0x0880, 0x0890, 0x08a0, 0x08b0,
0x08c0, 0x08d0, 0x08e0, 0x08f0, 0x0900, 0x0910, 0x0920, 0x0930,
@@ -66,108 +66,110 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0a40, 0x0a50, 0x0a60, 0x0a70, 0x0a80, 0x0a90, 0x0aa0, 0x0ab0,
0x0ac0, 0x0ad0, 0x0ae0, 0x0af0, 0x0b00, 0x0b10, 0x0b20, 0x0b30,
0x0b40, 0x0b50, 0x0b60, 0x0b70, 0x0b80, 0x0b90, 0x0ba0, 0x0bb0,
- 0x0bc0, 0x0bd0, 0x0be0, 0x0be0, 0x0bf0, 0x0c00, 0x0c10, 0x0be0,
- 0x0c20, 0x0c30, 0x0c40, 0x0c50, 0x0c60, 0x0c70, 0x0c80, 0x0c90,
- 0x0ca0, 0x0cb0, 0x0cb0, 0x0cc0, 0x0cb0, 0x0cd0, 0x07d0, 0x07d0,
- 0x0ce0, 0x0cf0, 0x0d00, 0x0d10, 0x0d20, 0x0d30, 0x07d0, 0x07d0,
- 0x0d40, 0x0d40, 0x0d40, 0x0d40, 0x0d50, 0x0d40, 0x0d60, 0x0d70,
- 0x0d40, 0x0d50, 0x0d40, 0x0d80, 0x0d80, 0x0d90, 0x07d0, 0x07d0,
- 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0,
- 0x0da0, 0x0da0, 0x0db0, 0x0db0, 0x0dc0, 0x0db0, 0x0db0, 0x0dd0,
- 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0,
- 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0,
- 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0e00, 0x0e10, 0x0df0, 0x0df0,
- 0x0e00, 0x0df0, 0x0df0, 0x0e20, 0x0e30, 0x0e40, 0x0df0, 0x0df0,
- 0x0df0, 0x0e30, 0x0df0, 0x0df0, 0x0df0, 0x0e50, 0x0df0, 0x0e60,
- 0x0df0, 0x0e70, 0x0e80, 0x0e80, 0x0e80, 0x0e80, 0x0e80, 0x0e90,
- 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0,
- 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0,
- 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0,
- 0x0eb0, 0x0ec0, 0x0ed0, 0x0ed0, 0x0ed0, 0x0ed0, 0x0ee0, 0x0ef0,
- 0x0f00, 0x0f10, 0x0f20, 0x0f30, 0x0f40, 0x0f50, 0x0f60, 0x0f70,
- 0x0f80, 0x0f80, 0x0f80, 0x0f80, 0x0f80, 0x0f90, 0x0fa0, 0x0fa0,
- 0x0fb0, 0x0fc0, 0x0fd0, 0x0fd0, 0x0fd0, 0x0fd0, 0x0fd0, 0x0fe0,
- 0x0fd0, 0x0fd0, 0x0ff0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x1000,
- 0x1010, 0x1020, 0x1030, 0x1030, 0x1040, 0x1050, 0x1060, 0x1070,
- 0x1080, 0x1080, 0x1090, 0x1080, 0x10a0, 0x10b0, 0x0f80, 0x0f80,
- 0x10c0, 0x10d0, 0x10e0, 0x10e0, 0x10e0, 0x10f0, 0x10e0, 0x1100,
- 0x1110, 0x1110, 0x1120, 0x1130, 0x07d0, 0x07d0, 0x07d0, 0x07d0,
- 0x1140, 0x1140, 0x1140, 0x1140, 0x1150, 0x1140, 0x1140, 0x1160,
- 0x1170, 0x1170, 0x1170, 0x1170, 0x1180, 0x1180, 0x1180, 0x1190,
- 0x11a0, 0x11a0, 0x11a0, 0x11b0, 0x11c0, 0x11d0, 0x11d0, 0x11d0,
- 0x11e0, 0x07d0, 0x07d0, 0x07d0, 0x11f0, 0x1200, 0x1210, 0x1220,
- 0x0540, 0x0540, 0x1230, 0x0540, 0x0540, 0x1240, 0x1250, 0x1260,
- 0x0540, 0x0540, 0x0540, 0x1270, 0x0580, 0x0580, 0x0580, 0x1280,
- 0x05b0, 0x1290, 0x05b0, 0x05b0, 0x1290, 0x12a0, 0x05b0, 0x12b0,
- 0x05b0, 0x05b0, 0x05b0, 0x12c0, 0x12c0, 0x12d0, 0x05b0, 0x12e0,
- 0x12f0, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x1300, 0x1310,
- 0x1320, 0x1330, 0x0500, 0x0500, 0x07d0, 0x0580, 0x0580, 0x1340,
- 0x0500, 0x0500, 0x1350, 0x1360, 0x1370, 0x0500, 0x0540, 0x0540,
- 0x1380, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500,
- 0x0500, 0x0500, 0x1390, 0x07d0, 0x13a0, 0x07d0, 0x0500, 0x0500,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500,
- 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0,
- 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x13c0,
- 0x0500, 0x13d0, 0x0500, 0x13e0, 0x13f0, 0x1400, 0x1410, 0x07d0,
- 0x1420, 0x1420, 0x1430, 0x1420, 0x1420, 0x1430, 0x0540, 0x0540,
- 0x1440, 0x1440, 0x1440, 0x1440, 0x1440, 0x1440, 0x1440, 0x1450,
- 0x0db0, 0x0db0, 0x0dc0, 0x1460, 0x1460, 0x1460, 0x1470, 0x1480,
- 0x0df0, 0x1490, 0x14a0, 0x14a0, 0x14a0, 0x14a0, 0x05e0, 0x05e0,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x14b0, 0x07d0, 0x07d0, 0x07d0,
- 0x14c0, 0x14d0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14e0,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14f0, 0x07d0, 0x1500,
- 0x1510, 0x0500, 0x1520, 0x1530, 0x1540, 0x1550, 0x1550, 0x1550,
- 0x1550, 0x1560, 0x1570, 0x1580, 0x1580, 0x1580, 0x1580, 0x1590,
- 0x15a0, 0x15b0, 0x15c0, 0x15d0, 0x0de0, 0x0de0, 0x0de0, 0x0de0,
- 0x15e0, 0x0500, 0x15b0, 0x15f0, 0x0500, 0x0500, 0x1600, 0x1580,
- 0x0de0, 0x15e0, 0x0500, 0x0500, 0x0500, 0x0500, 0x0de0, 0x1610,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x1580, 0x1580, 0x1620,
- 0x1580, 0x1580, 0x1580, 0x1580, 0x1580, 0x1630, 0x0500, 0x0500,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0,
- 0x14c0, 0x14c0, 0x14c0, 0x14f0, 0x0500, 0x0500, 0x0500, 0x0500,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x1640, 0x07d0,
+ 0x0bc0, 0x0bd0, 0x0be0, 0x0bf0, 0x0c00, 0x0c10, 0x0c20, 0x0be0,
+ 0x0c30, 0x0c40, 0x0c50, 0x0c60, 0x0c70, 0x0c80, 0x0c90, 0x0ca0,
+ 0x0cb0, 0x0cc0, 0x0cc0, 0x0cd0, 0x0cc0, 0x0ce0, 0x07d0, 0x07d0,
+ 0x0cf0, 0x0d00, 0x0d10, 0x0d20, 0x0d30, 0x0d40, 0x07d0, 0x07d0,
+ 0x0d50, 0x0d50, 0x0d50, 0x0d50, 0x0d60, 0x0d50, 0x0d70, 0x0d80,
+ 0x0d50, 0x0d60, 0x0d50, 0x0d90, 0x0d90, 0x0da0, 0x07d0, 0x07d0,
+ 0x0db0, 0x0db0, 0x0db0, 0x0db0, 0x0db0, 0x0db0, 0x0db0, 0x0db0,
+ 0x0db0, 0x0db0, 0x0dc0, 0x0dc0, 0x0dd0, 0x0dc0, 0x0dc0, 0x0de0,
+ 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0,
+ 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0,
+ 0x0e00, 0x0e00, 0x0e00, 0x0e00, 0x0e10, 0x0e20, 0x0e00, 0x0e00,
+ 0x0e10, 0x0e00, 0x0e00, 0x0e30, 0x0e40, 0x0e50, 0x0e00, 0x0e00,
+ 0x0e00, 0x0e40, 0x0e00, 0x0e00, 0x0e00, 0x0e60, 0x0e00, 0x0e70,
+ 0x0e00, 0x0e80, 0x0e90, 0x0e90, 0x0e90, 0x0e90, 0x0e90, 0x0ea0,
+ 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0,
+ 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0,
+ 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0,
+ 0x0ec0, 0x0ed0, 0x0ee0, 0x0ee0, 0x0ee0, 0x0ee0, 0x0ef0, 0x0f00,
+ 0x0f10, 0x0f20, 0x0f30, 0x0f40, 0x0f50, 0x0f60, 0x0f70, 0x0f80,
+ 0x0f90, 0x0f90, 0x0f90, 0x0f90, 0x0f90, 0x0fa0, 0x0fb0, 0x0fb0,
+ 0x0fc0, 0x0fd0, 0x0fe0, 0x0fe0, 0x0fe0, 0x0fe0, 0x0fe0, 0x0ff0,
+ 0x0fe0, 0x0fe0, 0x1000, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x1010,
+ 0x1020, 0x1030, 0x1040, 0x1040, 0x1050, 0x1060, 0x1070, 0x1080,
+ 0x1090, 0x1090, 0x10a0, 0x1090, 0x10b0, 0x10c0, 0x0f90, 0x0f90,
+ 0x10d0, 0x10e0, 0x10f0, 0x10f0, 0x10f0, 0x1100, 0x10f0, 0x1110,
+ 0x1120, 0x1120, 0x1130, 0x1140, 0x07d0, 0x07d0, 0x07d0, 0x07d0,
+ 0x1150, 0x1150, 0x1150, 0x1150, 0x1160, 0x1150, 0x1150, 0x1170,
+ 0x1180, 0x1180, 0x1180, 0x1180, 0x1190, 0x1190, 0x1190, 0x11a0,
+ 0x11b0, 0x11b0, 0x11b0, 0x11c0, 0x11d0, 0x11e0, 0x11e0, 0x11e0,
+ 0x11f0, 0x07d0, 0x07d0, 0x07d0, 0x1200, 0x1210, 0x1220, 0x1230,
+ 0x0550, 0x0550, 0x1240, 0x0550, 0x0550, 0x1250, 0x1260, 0x1270,
+ 0x0550, 0x0550, 0x0550, 0x1280, 0x0590, 0x0590, 0x0590, 0x1290,
+ 0x05c0, 0x12a0, 0x05c0, 0x05c0, 0x12a0, 0x12b0, 0x05c0, 0x12c0,
+ 0x05c0, 0x05c0, 0x05c0, 0x12d0, 0x12d0, 0x12e0, 0x05c0, 0x12f0,
+ 0x1300, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x1310, 0x1320,
+ 0x1330, 0x1340, 0x0510, 0x1330, 0x07d0, 0x0590, 0x0590, 0x1350,
+ 0x0510, 0x0510, 0x1360, 0x1370, 0x1380, 0x0510, 0x0550, 0x0550,
+ 0x1390, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x1330,
+ 0x0510, 0x0510, 0x13a0, 0x07d0, 0x13b0, 0x07d0, 0x0510, 0x0510,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510,
+ 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0,
+ 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x13d0,
+ 0x0510, 0x13e0, 0x0510, 0x13f0, 0x1400, 0x1410, 0x1420, 0x07d0,
+ 0x1430, 0x1430, 0x1440, 0x1430, 0x1430, 0x1440, 0x0550, 0x0550,
+ 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1460,
+ 0x0dc0, 0x0dc0, 0x0dd0, 0x1470, 0x1470, 0x1470, 0x1480, 0x1490,
+ 0x0e00, 0x14a0, 0x14b0, 0x14b0, 0x14b0, 0x14b0, 0x05f0, 0x05f0,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x14c0, 0x07d0, 0x07d0, 0x07d0,
+ 0x14d0, 0x14e0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14f0,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x1500, 0x07d0, 0x1510,
+ 0x1520, 0x0510, 0x1530, 0x1540, 0x1550, 0x1560, 0x1560, 0x1560,
+ 0x1560, 0x1570, 0x1580, 0x1590, 0x1590, 0x1590, 0x1590, 0x15a0,
+ 0x15b0, 0x15c0, 0x15d0, 0x15e0, 0x0df0, 0x0df0, 0x0df0, 0x0df0,
+ 0x15f0, 0x0510, 0x15c0, 0x1600, 0x0510, 0x0510, 0x1610, 0x1590,
+ 0x0df0, 0x15f0, 0x0510, 0x0510, 0x0510, 0x0510, 0x0df0, 0x1620,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x1590, 0x1590, 0x1630,
+ 0x1590, 0x1590, 0x1590, 0x1590, 0x1590, 0x1640, 0x0510, 0x0510,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0,
+ 0x14d0, 0x14d0, 0x14d0, 0x1500, 0x0510, 0x0510, 0x0510, 0x0510,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x1500, 0x07d0, 0x07d0,
0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650,
0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650,
0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650,
0x1660, 0x1650, 0x1650, 0x1650, 0x1670, 0x1680, 0x1680, 0x1680,
0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690,
0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690,
- 0x1690, 0x1690, 0x16a0, 0x07d0, 0x05e0, 0x05e0, 0x05e0, 0x05e0,
- 0x05e0, 0x05e0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16c0,
- 0x0500, 0x0500, 0x16d0, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540,
- 0x16e0, 0x0540, 0x16f0, 0x1700, 0x07d0, 0x07d0, 0x07d0, 0x1710,
- 0x1720, 0x1720, 0x1730, 0x14b0, 0x1740, 0x1740, 0x1740, 0x1750,
- 0x1760, 0x1760, 0x1760, 0x1760, 0x1770, 0x1780, 0x0810, 0x1790,
- 0x17a0, 0x17a0, 0x17b0, 0x17c0, 0x17c0, 0x17d0, 0x0de0, 0x17e0,
- 0x17f0, 0x17f0, 0x17f0, 0x17f0, 0x1800, 0x1810, 0x0da0, 0x1820,
- 0x1830, 0x1830, 0x1830, 0x1840, 0x1850, 0x1860, 0x0da0, 0x0da0,
- 0x1870, 0x1870, 0x1870, 0x1870, 0x1880, 0x1890, 0x18a0, 0x18b0,
- 0x18c0, 0x18d0, 0x14a0, 0x0540, 0x0540, 0x18e0, 0x18f0, 0x0e80,
- 0x0e80, 0x0e80, 0x0e80, 0x0e80, 0x18a0, 0x18a0, 0x1900, 0x1910,
- 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0,
- 0x0de0, 0x0de0, 0x1920, 0x0de0, 0x1930, 0x0de0, 0x0de0, 0x1940,
+ 0x1690, 0x1690, 0x16a0, 0x07d0, 0x05f0, 0x05f0, 0x05f0, 0x05f0,
+ 0x05f0, 0x05f0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16c0,
+ 0x0510, 0x0510, 0x16d0, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550,
+ 0x16e0, 0x0550, 0x16f0, 0x1700, 0x07d0, 0x07d0, 0x07d0, 0x1710,
+ 0x1720, 0x1720, 0x1730, 0x1740, 0x1750, 0x1750, 0x1750, 0x1760,
+ 0x1770, 0x1770, 0x1770, 0x1770, 0x1780, 0x1790, 0x0810, 0x17a0,
+ 0x17b0, 0x17b0, 0x17c0, 0x17d0, 0x17d0, 0x17e0, 0x0df0, 0x17f0,
+ 0x1800, 0x1800, 0x1800, 0x1800, 0x1810, 0x1820, 0x0db0, 0x1830,
+ 0x1840, 0x1840, 0x1840, 0x1850, 0x1860, 0x1870, 0x0db0, 0x0db0,
+ 0x1880, 0x1880, 0x1880, 0x1880, 0x1890, 0x18a0, 0x18b0, 0x18c0,
+ 0x18d0, 0x18e0, 0x14b0, 0x0550, 0x0550, 0x18f0, 0x1900, 0x0e90,
+ 0x0e90, 0x0e90, 0x0e90, 0x0e90, 0x18b0, 0x18b0, 0x1910, 0x1920,
+ 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0,
+ 0x0df0, 0x0df0, 0x1930, 0x0df0, 0x1940, 0x0df0, 0x0df0, 0x1950,
0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0,
0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x1950, 0x14c0,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x1960, 0x07d0, 0x07d0,
- 0x1970, 0x1980, 0x0650, 0x1990, 0x19a0, 0x06b0, 0x06b0, 0x06b0,
- 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x19b0, 0x19c0, 0x06b0, 0x06b0,
- 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0,
- 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0,
- 0x06b0, 0x06b0, 0x06b0, 0x19d0, 0x07d0, 0x06b0, 0x06b0, 0x06b0,
- 0x06b0, 0x19e0, 0x06b0, 0x06b0, 0x19f0, 0x07d0, 0x07d0, 0x1a00,
- 0x0580, 0x14b0, 0x1a10, 0x0500, 0x0500, 0x1a20, 0x1a30, 0x1a40,
- 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x1a50,
- 0x1a60, 0x0500, 0x0510, 0x0520, 0x0510, 0x0520, 0x1a70, 0x1570,
- 0x1580, 0x1a80, 0x0de0, 0x15e0, 0x1a90, 0x1aa0, 0x1ab0, 0x1ac0,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x1960, 0x14d0,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x1970, 0x07d0, 0x07d0,
+ 0x1980, 0x1990, 0x0660, 0x19a0, 0x19b0, 0x06c0, 0x06c0, 0x06c0,
+ 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x19c0, 0x19d0, 0x06c0, 0x06c0,
+ 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0,
+ 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0,
+ 0x06c0, 0x06c0, 0x06c0, 0x19e0, 0x07d0, 0x06c0, 0x06c0, 0x06c0,
+ 0x06c0, 0x19f0, 0x06c0, 0x06c0, 0x1a00, 0x07d0, 0x07d0, 0x1a10,
+ 0x0590, 0x1740, 0x1a20, 0x0510, 0x0510, 0x1a30, 0x1a40, 0x1a50,
+ 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x1a60,
+ 0x1a70, 0x0510, 0x0520, 0x0530, 0x0520, 0x0530, 0x1a80, 0x1580,
+ 0x1590, 0x1a90, 0x0df0, 0x15f0, 0x1aa0, 0x1ab0, 0x1ac0, 0x1ad0,
/* values */
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
@@ -222,7 +224,7 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0001, 0x0003, 0x0003,
0x0003, 0x0003, 0x0003, 0x0003, 0x0001, 0x0003, 0x0003, 0x0003,
0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,
- 0x0003, 0x0003, 0x0003, 0x0001, 0x0003, 0x0000, 0x0003, 0x0001,
+ 0x0003, 0x0003, 0x0003, 0x0001, 0x0001, 0x0000, 0x0003, 0x0001,
0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,
0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,
0x0001, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,
@@ -257,8 +259,6 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
0x0039, 0x0039, 0x0039, 0x0039, 0x0000, 0x0000, 0x0039, 0x0000,
- 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051,
- 0x0051, 0x0051, 0x0051, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0000, 0x0003, 0x0003,
@@ -288,7 +288,7 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0009, 0x0009, 0x0009, 0x0009, 0x0000, 0x0000, 0x0009, 0x0009,
0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
- 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0000, 0x0000,
+ 0x0009, 0x0009, 0x0009, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0020, 0x0020, 0x0020, 0x0000, 0x0020, 0x0020, 0x0020,
0x0020, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020,
0x0020, 0x0000, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
@@ -320,7 +320,7 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x001f, 0x001f, 0x001f, 0x001f, 0x0000, 0x0000, 0x001f, 0x001f,
0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
0x001f, 0x001f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x0000, 0x001f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0045, 0x0045, 0x0045, 0x0000, 0x0045, 0x0045, 0x0045,
0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0000, 0x0000, 0x0045,
0x0045, 0x0000, 0x0000, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
@@ -385,12 +385,14 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
0x0000, 0x002b, 0x002b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0038, 0x0038, 0x0038, 0x0038, 0x0000, 0x0038, 0x0038, 0x0038,
+ 0x0000, 0x0038, 0x0038, 0x0038, 0x0000, 0x0038, 0x0038, 0x0038,
0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0000, 0x0038, 0x0038,
0x0038, 0x0000, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
+ 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
+ 0x0038, 0x0038, 0x0038, 0x0000, 0x0000, 0x0038, 0x0038, 0x0038,
0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0000, 0x0038, 0x0038,
0x0038, 0x0000, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
0x0000, 0x0000, 0x0000, 0x0000, 0x0038, 0x0038, 0x0038, 0x0038,
@@ -589,7 +591,7 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
0x0002, 0x0001, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0001,
- 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0001, 0x0000,
0x0002, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x0016, 0x0031, 0x0031, 0x0031, 0x0031,
@@ -601,8 +603,8 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0016, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x001e,
- 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
- 0x0002, 0x0002, 0x0000, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
+ 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0000, 0x0000,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0000, 0x0000,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
@@ -649,7 +651,7 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001,
@@ -671,8 +673,8 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0000,
0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0000,
- 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
@@ -706,7 +708,7 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x0000,
0x0000, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
@@ -721,8 +723,6 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0000,
0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
- 0x0021, 0x0021, 0x0021, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f,
0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f,
0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f,
@@ -753,6 +753,8 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
0x0050, 0x0050, 0x0050, 0x0050, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
diff --git a/dlls/dwrite/scripts.h b/dlls/dwrite/scripts.h
index 7202f402e6..bf38988b0a 100644
--- a/dlls/dwrite/scripts.h
+++ b/dlls/dwrite/scripts.h
@@ -1,5 +1,5 @@
/* Unicode Script IDs */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/Scripts.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/Scripts.txt */
/* DO NOT EDIT!! */
enum unicode_script_id {
@@ -141,5 +141,9 @@ enum unicode_script_id {
Script_Osage = 135,
Script_SignWriting = 136,
Script_Tangut = 137,
- Script_LastId = 137
+ Script_Masaram_Gondi = 138,
+ Script_Nushu = 139,
+ Script_Soyombo = 140,
+ Script_Zanabazar_Square = 141,
+ Script_LastId = 141
};
diff --git a/dlls/gdi32/vertical.c b/dlls/gdi32/vertical.c
index 05737604b8..ca4467911c 100644
--- a/dlls/gdi32/vertical.c
+++ b/dlls/gdi32/vertical.c
@@ -1,5 +1,5 @@
/* Unicode Vertical Orientation */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/VerticalOrientation.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/VerticalOrientation.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/dlls/usp10/bracket.c b/dlls/usp10/bracket.c
index 1509d572c9..16df6381a6 100644
--- a/dlls/usp10/bracket.c
+++ b/dlls/usp10/bracket.c
@@ -1,5 +1,5 @@
/* Unicode Bidirectional Bracket table */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/BidiBrackets.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/BidiBrackets.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/dlls/usp10/indicsyllable.c b/dlls/usp10/indicsyllable.c
index dbdac5d4ae..709b1d4ae8 100644
--- a/dlls/usp10/indicsyllable.c
+++ b/dlls/usp10/indicsyllable.c
@@ -1,11 +1,11 @@
/* Unicode Indic Syllabic Category */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/IndicSyllabicCategory.txt */
-/* and from http://www.unicode.org/Public/10.0.0/ucd/IndicPositionalCategory.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/IndicSyllabicCategory.txt */
+/* and from http://www.unicode.org/Public/11.0.0/ucd/IndicPositionalCategory.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
-const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
+const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3296] =
{
/* level 1 offsets */
0x0100, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
@@ -53,41 +53,41 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x04b0, 0x04c0, 0x04d0, 0x04e0, 0x04f0, 0x0500, 0x0400, 0x0270,
0x0510, 0x0520, 0x0370, 0x0530, 0x0540, 0x0550, 0x0330, 0x0270,
0x0560, 0x0520, 0x0370, 0x0570, 0x0580, 0x0590, 0x0330, 0x05a0,
- 0x05b0, 0x0520, 0x02f0, 0x05c0, 0x05d0, 0x05e0, 0x0330, 0x05f0,
- 0x0600, 0x0610, 0x02f0, 0x0620, 0x0630, 0x0640, 0x0400, 0x0650,
- 0x0660, 0x02f0, 0x0670, 0x0680, 0x0690, 0x0290, 0x0270, 0x0270,
- 0x06a0, 0x06b0, 0x06c0, 0x06d0, 0x06e0, 0x06f0, 0x0270, 0x0270,
- 0x0270, 0x0700, 0x0710, 0x0720, 0x0730, 0x02f0, 0x0740, 0x0750,
- 0x0760, 0x0770, 0x0780, 0x0790, 0x07a0, 0x0270, 0x0270, 0x0270,
- 0x02f0, 0x02f0, 0x07b0, 0x07c0, 0x07d0, 0x07e0, 0x07f0, 0x0800,
- 0x0810, 0x0820, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
- 0x0830, 0x0840, 0x0850, 0x0840, 0x0850, 0x0860, 0x0830, 0x0870,
- 0x02f0, 0x02f0, 0x0880, 0x0890, 0x08a0, 0x08b0, 0x0290, 0x0270,
- 0x08c0, 0x0670, 0x08d0, 0x08e0, 0x0400, 0x02f0, 0x08f0, 0x0900,
- 0x02f0, 0x02f0, 0x0910, 0x0920, 0x0930, 0x0290, 0x0270, 0x0270,
- 0x02f0, 0x0940, 0x02f0, 0x02f0, 0x0950, 0x0960, 0x0970, 0x0980,
+ 0x0560, 0x0520, 0x02f0, 0x05b0, 0x05c0, 0x05d0, 0x0330, 0x05e0,
+ 0x05f0, 0x0600, 0x02f0, 0x0610, 0x0620, 0x0630, 0x0400, 0x0640,
+ 0x0650, 0x02f0, 0x0660, 0x0670, 0x0680, 0x0290, 0x0270, 0x0270,
+ 0x0690, 0x06a0, 0x06b0, 0x06c0, 0x06d0, 0x06e0, 0x0270, 0x0270,
+ 0x0270, 0x06f0, 0x0700, 0x0710, 0x0720, 0x02f0, 0x0730, 0x0740,
+ 0x0750, 0x0760, 0x0770, 0x0780, 0x0790, 0x0270, 0x0270, 0x0270,
+ 0x02f0, 0x02f0, 0x07a0, 0x07b0, 0x07c0, 0x07d0, 0x07e0, 0x07f0,
+ 0x0800, 0x0810, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
+ 0x0820, 0x0830, 0x0840, 0x0830, 0x0840, 0x0850, 0x0820, 0x0860,
+ 0x02f0, 0x02f0, 0x0870, 0x0880, 0x0890, 0x08a0, 0x0290, 0x0270,
+ 0x08b0, 0x0660, 0x08c0, 0x08d0, 0x0400, 0x02f0, 0x08e0, 0x08f0,
+ 0x02f0, 0x02f0, 0x0900, 0x0910, 0x0920, 0x0290, 0x0270, 0x0270,
+ 0x02f0, 0x0930, 0x02f0, 0x02f0, 0x0940, 0x0950, 0x0960, 0x0970,
0x0290, 0x0290, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
- 0x0990, 0x0850, 0x02f0, 0x09a0, 0x09b0, 0x0290, 0x09c0, 0x09d0,
- 0x09e0, 0x02f0, 0x09f0, 0x0a00, 0x02f0, 0x02f0, 0x0a10, 0x0a20,
- 0x02f0, 0x02f0, 0x0a30, 0x0a40, 0x0a50, 0x0270, 0x0270, 0x0270,
- 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0a60, 0x0a70, 0x0a80,
+ 0x0980, 0x0840, 0x02f0, 0x0990, 0x09a0, 0x0290, 0x09b0, 0x09c0,
+ 0x09d0, 0x02f0, 0x09e0, 0x09f0, 0x02f0, 0x02f0, 0x0a00, 0x0a10,
+ 0x02f0, 0x02f0, 0x0a20, 0x0a30, 0x0a40, 0x0270, 0x0270, 0x0270,
+ 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0a50, 0x0a60, 0x0a70,
0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
- 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0a90,
- 0x0aa0, 0x0ab0, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0ac0,
- 0x0ad0, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
+ 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0a80,
+ 0x0a90, 0x0aa0, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0ab0,
+ 0x0ac0, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
- 0x0270, 0x0270, 0x0270, 0x0270, 0x0ae0, 0x0270, 0x0270, 0x0270,
- 0x0af0, 0x02f0, 0x0b00, 0x0270, 0x02f0, 0x0b10, 0x0b20, 0x0b30,
- 0x0b40, 0x0b50, 0x02f0, 0x0b60, 0x0b70, 0x0290, 0x0b80, 0x0b90,
- 0x0ba0, 0x02f0, 0x0bb0, 0x02f0, 0x0bc0, 0x0bd0, 0x0270, 0x0270,
- 0x0be0, 0x02f0, 0x02f0, 0x0bf0, 0x0c00, 0x0290, 0x0c10, 0x0c20,
- 0x0c30, 0x02f0, 0x0c40, 0x0c50, 0x0c60, 0x0290, 0x02f0, 0x0c70,
- 0x02f0, 0x02f0, 0x02f0, 0x0c80, 0x0c90, 0x0270, 0x0ca0, 0x0cb0,
+ 0x0270, 0x0270, 0x0270, 0x0270, 0x0ad0, 0x0270, 0x0270, 0x0270,
+ 0x0ae0, 0x02f0, 0x0af0, 0x0270, 0x02f0, 0x0b00, 0x0b10, 0x0b20,
+ 0x0b30, 0x0b40, 0x02f0, 0x0b50, 0x0b60, 0x0290, 0x0b70, 0x0b80,
+ 0x0b90, 0x02f0, 0x0ba0, 0x02f0, 0x0bb0, 0x0bc0, 0x0270, 0x0270,
+ 0x0bd0, 0x02f0, 0x02f0, 0x0be0, 0x0bf0, 0x0290, 0x0c00, 0x0c10,
+ 0x0c20, 0x02f0, 0x0c30, 0x0c40, 0x0c50, 0x0290, 0x02f0, 0x0c60,
+ 0x02f0, 0x02f0, 0x02f0, 0x0c70, 0x0c80, 0x0270, 0x0c90, 0x0ca0,
0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
- 0x0270, 0x0270, 0x0270, 0x0270, 0x0cc0, 0x0cd0, 0x0ce0, 0x0290,
+ 0x0270, 0x0270, 0x0270, 0x0270, 0x0cb0, 0x0cc0, 0x0cd0, 0x0290,
/* values */
0x5f00, 0x9c00, 0x9500, 0x9500, 0x8600, 0x8600, 0x8600, 0x8600,
- 0x7e00, 0x6e00, 0x6c00, 0x6000, 0x5100, 0x3c00, 0x2600, 0x1900,
+ 0x7e00, 0x6e00, 0x5d00, 0x5100, 0x4200, 0x2d00, 0x1700, 0x0a00,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -129,7 +129,7 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0107,
0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a,
0x000a, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0501, 0x0501, 0x0102, 0x0000, 0x0006, 0x0006, 0x0006,
0x0006, 0x0006, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006,
0x000a, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x0000,
@@ -151,7 +151,7 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x0107, 0x0607, 0x0607, 0x0607, 0x0607, 0x0507, 0x0000, 0x0507,
0x0507, 0x0007, 0x0000, 0x0107, 0x0107, 0x0605, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x000a, 0x0519, 0x0519, 0x0519, 0x0504, 0x0504, 0x0504,
+ 0x0000, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x000a, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x000a,
0x000a, 0x000a, 0x0000, 0x0000, 0x0604, 0x0003, 0x0107, 0x0507,
0x0107, 0x0607, 0x0607, 0x0607, 0x0607, 0x0000, 0x0000, 0x0207,
@@ -192,10 +192,8 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0000,
0x0000, 0x001f, 0x001f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0501, 0x0501, 0x0101, 0x0102, 0x0000, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0006, 0x0006,
0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x0516, 0x0516, 0x0003, 0x0107, 0x0107,
+ 0x000a, 0x000a, 0x000a, 0x0000, 0x0000, 0x0003, 0x0107, 0x0107,
0x0107, 0x0107, 0x0107, 0x0607, 0x0607, 0x0000, 0x0207, 0x0207,
0x0207, 0x0000, 0x0407, 0x0407, 0x0407, 0x0505, 0x0015, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x000b, 0x000b, 0x0107,
@@ -310,12 +308,12 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x0607, 0x0207, 0x0107, 0x0507, 0x0000, 0x0000, 0x0000, 0x0000,
0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x000a, 0x000a, 0x020e, 0x060e, 0x010d,
- 0x050f, 0x050f, 0x050c, 0x060d, 0x060d, 0x060d, 0x060d, 0x0000,
+ 0x0006, 0x0006, 0x0006, 0x000a, 0x000a, 0x020e, 0x060e, 0x010f,
+ 0x050f, 0x050f, 0x050f, 0x060f, 0x060f, 0x060f, 0x060f, 0x0000,
0x0017, 0x0107, 0x0507, 0x0107, 0x0107, 0x0507, 0x0507, 0x0507,
0x0507, 0x0607, 0x0607, 0x0507, 0x0607, 0x0107, 0x0207, 0x0207,
- 0x0207, 0x0207, 0x0207, 0x0507, 0x0501, 0x0513, 0x0513, 0x0513,
- 0x0513, 0x0513, 0x0516, 0x0521, 0x0521, 0x0000, 0x0000, 0x0621,
+ 0x0207, 0x0207, 0x0207, 0x0507, 0x0507, 0x0513, 0x0513, 0x0513,
+ 0x0513, 0x0513, 0x0521, 0x0521, 0x0521, 0x0000, 0x0000, 0x0621,
0x0501, 0x0501, 0x0501, 0x050c, 0x0102, 0x0006, 0x0006, 0x0006,
0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
0x000a, 0x000a, 0x000a, 0x000a, 0x0504, 0x0107, 0x0507, 0x0507,
@@ -346,7 +344,7 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x0619, 0x0619, 0x0519, 0x0519, 0x0619, 0x0619, 0x0619, 0x0619,
0x0519, 0x0119, 0x0d00, 0x0d00, 0x0d00, 0x0d00, 0x0d00, 0x0d00,
0x0d00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0002, 0x0002, 0x0519, 0x0000, 0x0000, 0x0119,
+ 0x0000, 0x0000, 0x0002, 0x0002, 0x0519, 0x0000, 0x0000, 0x0000,
0x0019, 0x0019, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0521, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -380,7 +378,7 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0519, 0x0519, 0x0519, 0x0519, 0x0519, 0x0519, 0x0519, 0x0519,
0x0519, 0x0519, 0x0519, 0x0519, 0x0519, 0x0519, 0x0519, 0x0519,
- 0x0519, 0x0519, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0519, 0x0519, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
@@ -393,7 +391,7 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x0501, 0x0501, 0x050c, 0x0102, 0x0006, 0x0006, 0x0006, 0x0006,
0x0006, 0x000a, 0x000a, 0x000a, 0x0006, 0x0006, 0x0006, 0x000a,
0x000a, 0x000a, 0x000a, 0x0504, 0x0107, 0x0107, 0x0507, 0x0507,
- 0x0607, 0x0607, 0x0207, 0x0207, 0x0507, 0x010d, 0x010e, 0x000e,
+ 0x0607, 0x0607, 0x0207, 0x0207, 0x0507, 0x010d, 0x010e, 0x010e,
0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0507, 0x0000, 0x000a,
diff --git a/dlls/usp10/linebreak.c b/dlls/usp10/linebreak.c
index 56bde66e9e..cd2ca64952 100644
--- a/dlls/usp10/linebreak.c
+++ b/dlls/usp10/linebreak.c
@@ -1,10 +1,10 @@
/* Unicode Line Break Properties */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/LineBreak.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/LineBreak.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
-const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
+const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7264] =
{
/* level 1 offsets */
0x0100, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
@@ -56,22 +56,22 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0790, 0x07a0, 0x07b0,
0x07c0, 0x07d0, 0x05b0, 0x0580, 0x07e0, 0x05b0, 0x05b0, 0x05b0,
0x05b0, 0x05b0, 0x07f0, 0x0800, 0x07b0, 0x05b0, 0x0760, 0x0810,
- 0x05b0, 0x0820, 0x0830, 0x0840, 0x05b0, 0x0850, 0x0860, 0x0870,
- 0x0870, 0x0870, 0x05b0, 0x0880, 0x0870, 0x0890, 0x08a0, 0x0580,
- 0x08b0, 0x05b0, 0x05b0, 0x08c0, 0x0580, 0x08d0, 0x08e0, 0x05b0,
- 0x08f0, 0x0900, 0x0910, 0x0920, 0x0930, 0x0940, 0x0950, 0x0960,
- 0x0970, 0x0900, 0x0910, 0x0980, 0x0990, 0x09a0, 0x09b0, 0x09c0,
- 0x09d0, 0x0690, 0x0910, 0x09e0, 0x09f0, 0x0a00, 0x0950, 0x0a10,
- 0x0a20, 0x0900, 0x0910, 0x09e0, 0x0a30, 0x0a40, 0x0950, 0x0a50,
- 0x0a60, 0x0a70, 0x0a80, 0x0a90, 0x0aa0, 0x0ab0, 0x09b0, 0x0ac0,
- 0x0ad0, 0x0ae0, 0x0910, 0x0af0, 0x0b00, 0x0b10, 0x0950, 0x0b20,
- 0x0b30, 0x0ae0, 0x0910, 0x0b40, 0x0b00, 0x0b50, 0x0950, 0x0b60,
- 0x0ad0, 0x0ae0, 0x05b0, 0x0b70, 0x0b80, 0x0b90, 0x0950, 0x0ba0,
- 0x0bb0, 0x0bc0, 0x05b0, 0x0bd0, 0x0be0, 0x0bf0, 0x09b0, 0x0c00,
- 0x0c10, 0x0c20, 0x0c20, 0x0c30, 0x0c40, 0x0c50, 0x0870, 0x0870,
- 0x0c60, 0x0c70, 0x0c80, 0x0c90, 0x0ca0, 0x0cb0, 0x0870, 0x0870,
+ 0x05b0, 0x0820, 0x0830, 0x0840, 0x05b0, 0x0850, 0x0860, 0x0860,
+ 0x0860, 0x0860, 0x05b0, 0x0870, 0x0860, 0x0880, 0x0890, 0x0580,
+ 0x08a0, 0x05b0, 0x05b0, 0x08b0, 0x0580, 0x08c0, 0x08d0, 0x05b0,
+ 0x08e0, 0x08f0, 0x0900, 0x0910, 0x0920, 0x0930, 0x0940, 0x0950,
+ 0x0960, 0x08f0, 0x0900, 0x0970, 0x0980, 0x0990, 0x09a0, 0x09b0,
+ 0x09c0, 0x0690, 0x0900, 0x09d0, 0x09e0, 0x09f0, 0x0940, 0x0a00,
+ 0x0a10, 0x08f0, 0x0900, 0x09d0, 0x0a20, 0x0a30, 0x0940, 0x0a40,
+ 0x0a50, 0x0a60, 0x0a70, 0x0a80, 0x0a90, 0x0aa0, 0x09a0, 0x0ab0,
+ 0x0ac0, 0x0ad0, 0x0900, 0x0ae0, 0x0af0, 0x0b00, 0x0940, 0x0b10,
+ 0x0b20, 0x0ad0, 0x0900, 0x0b30, 0x0af0, 0x0b40, 0x0940, 0x0b50,
+ 0x0b60, 0x0ad0, 0x05b0, 0x0b70, 0x0b80, 0x0b90, 0x0940, 0x0ba0,
+ 0x0bb0, 0x0bc0, 0x05b0, 0x0bd0, 0x0be0, 0x0bf0, 0x09a0, 0x0c00,
+ 0x0c10, 0x0c20, 0x0c20, 0x0c30, 0x0c40, 0x0c50, 0x0860, 0x0860,
+ 0x0c60, 0x0c70, 0x0c80, 0x0c90, 0x0ca0, 0x0cb0, 0x0860, 0x0860,
0x0cc0, 0x0cd0, 0x07b0, 0x0ce0, 0x0cf0, 0x05b0, 0x0d00, 0x0d10,
- 0x0d20, 0x0d30, 0x0580, 0x0d40, 0x0d50, 0x0d60, 0x0870, 0x0870,
+ 0x0d20, 0x0d30, 0x0580, 0x0d40, 0x0d50, 0x0d60, 0x0860, 0x0860,
0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x0d70, 0x0c20, 0x0c20, 0x0c20,
0x0c20, 0x0d80, 0x05b0, 0x05b0, 0x0d90, 0x05b0, 0x05b0, 0x05b0,
0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0db0, 0x0db0,
@@ -86,16 +86,16 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0e70, 0x0e80, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0e90, 0x0ea0,
0x0eb0, 0x0ec0, 0x05b0, 0x0ed0, 0x05b0, 0x0ee0, 0x0eb0, 0x0ef0,
0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x0f00, 0x0f10, 0x0e50,
- 0x0f20, 0x0f10, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0a50,
+ 0x0f20, 0x0f10, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0a40,
0x0f30, 0x05b0, 0x0f40, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0f50,
0x05b0, 0x0840, 0x0f60, 0x0f60, 0x0f70, 0x0c20, 0x0f80, 0x0f90,
0x0c20, 0x0c20, 0x0fa0, 0x0c20, 0x0fb0, 0x0fc0, 0x05b0, 0x05b0,
0x05b0, 0x0fd0, 0x0c20, 0x0c20, 0x0c20, 0x0fe0, 0x0c20, 0x0ff0,
- 0x0f10, 0x0f10, 0x0f80, 0x1000, 0x0870, 0x0870, 0x0870, 0x0870,
+ 0x0f10, 0x0f10, 0x0f80, 0x1000, 0x0860, 0x0860, 0x0860, 0x0860,
0x1010, 0x05b0, 0x05b0, 0x1020, 0x1030, 0x1040, 0x1050, 0x1060,
0x1070, 0x05b0, 0x1080, 0x07b0, 0x05b0, 0x05b0, 0x07f0, 0x1090,
0x05b0, 0x05b0, 0x1020, 0x10a0, 0x10b0, 0x07b0, 0x05b0, 0x10c0,
- 0x0ea0, 0x0870, 0x0870, 0x0870, 0x0a50, 0x10d0, 0x10e0, 0x10f0,
+ 0x0ea0, 0x0860, 0x0860, 0x0860, 0x0a40, 0x10d0, 0x10e0, 0x10f0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0580, 0x0580, 0x0580, 0x1100,
0x05b0, 0x0e60, 0x05b0, 0x05b0, 0x0e60, 0x1110, 0x05b0, 0x1120,
@@ -108,80 +108,80 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x1320, 0x1330, 0x1340, 0x1350, 0x05b0, 0x05b0, 0x1360, 0x05b0,
0x1370, 0x1380, 0x1390, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x13a0,
- 0x05b0, 0x05b0, 0x13b0, 0x0870, 0x0860, 0x0870, 0x13c0, 0x13c0,
- 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13d0,
- 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x1270, 0x13c0, 0x13c0, 0x13e0,
- 0x13c0, 0x13f0, 0x1400, 0x1410, 0x1420, 0x1430, 0x1440, 0x05b0,
- 0x1450, 0x1460, 0x05b0, 0x1470, 0x1480, 0x05b0, 0x1490, 0x14a0,
- 0x05b0, 0x14b0, 0x05b0, 0x14c0, 0x14d0, 0x14e0, 0x14f0, 0x1500,
- 0x1510, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1520, 0x1530, 0x1540,
- 0x13c0, 0x1550, 0x05b0, 0x05b0, 0x1560, 0x05b0, 0x1570, 0x05b0,
+ 0x05b0, 0x05b0, 0x13b0, 0x0860, 0x13c0, 0x0860, 0x13d0, 0x13d0,
+ 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13e0,
+ 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x1270, 0x13d0, 0x13d0, 0x13f0,
+ 0x13d0, 0x1400, 0x1410, 0x1420, 0x1430, 0x1440, 0x1450, 0x05b0,
+ 0x1460, 0x1470, 0x05b0, 0x1480, 0x1490, 0x05b0, 0x14a0, 0x14b0,
+ 0x05b0, 0x14c0, 0x05b0, 0x14d0, 0x14e0, 0x14f0, 0x1500, 0x1510,
+ 0x1520, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1530, 0x1540, 0x1550,
+ 0x13d0, 0x1560, 0x05b0, 0x05b0, 0x1570, 0x05b0, 0x1580, 0x05b0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
- 0x1580, 0x1590, 0x05b0, 0x05b0, 0x05b0, 0x1370, 0x05b0, 0x15a0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x15b0, 0x05b0, 0x15c0,
- 0x05b0, 0x15d0, 0x05b0, 0x15e0, 0x0910, 0x15f0, 0x1600, 0x0870,
+ 0x1590, 0x15a0, 0x05b0, 0x05b0, 0x05b0, 0x1370, 0x05b0, 0x15b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x15c0, 0x05b0, 0x15d0,
+ 0x05b0, 0x15e0, 0x05b0, 0x15f0, 0x0900, 0x1600, 0x1610, 0x0860,
0x05b0, 0x05b0, 0x0840, 0x05b0, 0x05b0, 0x0840, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1610, 0x1620,
- 0x05b0, 0x05b0, 0x0d90, 0x05b0, 0x05b0, 0x05b0, 0x1630, 0x1640,
- 0x05b0, 0x13b0, 0x1650, 0x1650, 0x1650, 0x1650, 0x0580, 0x0580,
- 0x1660, 0x1670, 0x1680, 0x1690, 0x16a0, 0x0870, 0x0870, 0x0870,
- 0x16b0, 0x16c0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16d0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16e0, 0x0870, 0x16f0,
- 0x1700, 0x1710, 0x1720, 0x1730, 0x1740, 0x16b0, 0x1750, 0x16b0,
- 0x1760, 0x1770, 0x1780, 0x16b0, 0x1750, 0x16b0, 0x1760, 0x1790,
- 0x17a0, 0x16b0, 0x17b0, 0x17c0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x17b0, 0x16b0, 0x16b0, 0x17d0, 0x16b0, 0x16b0, 0x16d0, 0x17e0,
- 0x16b0, 0x17b0, 0x16b0, 0x16b0, 0x17f0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x17b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
- 0x16b0, 0x1800, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x1810, 0x16b0, 0x16b0, 0x16b0, 0x1820, 0x05b0, 0x05b0, 0x10c0,
- 0x1830, 0x05b0, 0x1840, 0x0870, 0x05b0, 0x05b0, 0x1610, 0x1850,
- 0x05b0, 0x1860, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1870,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1620, 0x1630,
+ 0x05b0, 0x05b0, 0x0d90, 0x05b0, 0x05b0, 0x05b0, 0x1640, 0x1650,
+ 0x05b0, 0x13b0, 0x1660, 0x1660, 0x1660, 0x1660, 0x0580, 0x0580,
+ 0x1670, 0x1680, 0x1690, 0x16a0, 0x16b0, 0x0860, 0x0860, 0x0860,
+ 0x16c0, 0x16d0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16e0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16f0, 0x0860, 0x1700,
+ 0x1710, 0x1720, 0x1730, 0x1740, 0x1750, 0x16c0, 0x1760, 0x16c0,
+ 0x1770, 0x1780, 0x1790, 0x16c0, 0x1760, 0x16c0, 0x1770, 0x17a0,
+ 0x17b0, 0x16c0, 0x17c0, 0x17d0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x17e0, 0x16c0, 0x16c0, 0x17f0, 0x16c0, 0x16c0, 0x16e0, 0x1800,
+ 0x16c0, 0x17e0, 0x16c0, 0x16c0, 0x1810, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x17e0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
+ 0x16c0, 0x1820, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x1830, 0x16c0, 0x16c0, 0x16c0, 0x1840, 0x05b0, 0x05b0, 0x10c0,
+ 0x1850, 0x05b0, 0x1860, 0x0860, 0x05b0, 0x05b0, 0x1620, 0x1870,
+ 0x05b0, 0x1880, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1890,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x0840, 0x0a50, 0x0870, 0x0870, 0x0870, 0x1880,
- 0x1890, 0x05b0, 0x18a0, 0x18b0, 0x05b0, 0x05b0, 0x05b0, 0x18c0,
- 0x18d0, 0x05b0, 0x05b0, 0x1020, 0x18e0, 0x0f10, 0x0580, 0x18f0,
- 0x07b0, 0x05b0, 0x1900, 0x05b0, 0x1910, 0x1920, 0x0da0, 0x1930,
- 0x08b0, 0x05b0, 0x05b0, 0x1940, 0x1950, 0x1960, 0x0c20, 0x1970,
- 0x05b0, 0x05b0, 0x1980, 0x1990, 0x19a0, 0x19b0, 0x0c20, 0x0c20,
- 0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x19c0, 0x19d0, 0x0760, 0x19e0,
- 0x19f0, 0x1a00, 0x1650, 0x05b0, 0x05b0, 0x05b0, 0x0f50, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1a10, 0x0f10,
- 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20,
- 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30,
- 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40,
- 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50,
- 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40,
- 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60,
- 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40,
- 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20,
- 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30,
- 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40,
- 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50,
- 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40,
- 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60,
- 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40,
- 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40,
- 0x1a50, 0x1a40, 0x1a70, 0x0db0, 0x1a80, 0x0dd0, 0x0dd0, 0x1a90,
- 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0,
- 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0,
- 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
- 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
- 0x13b0, 0x1ab0, 0x1ac0, 0x1ad0, 0x1ae0, 0x05b0, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1af0, 0x1b00, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x1b10, 0x0870, 0x05b0, 0x05b0, 0x05b0,
- 0x05b0, 0x1b20, 0x05b0, 0x05b0, 0x0a50, 0x0870, 0x0870, 0x1b30,
- 0x0580, 0x1b40, 0x0580, 0x1b50, 0x1b60, 0x1b70, 0x1b80, 0x1130,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1b90,
- 0x1ba0, 0x1bb0, 0x16b0, 0x1bc0, 0x16b0, 0x1bd0, 0x1be0, 0x1bf0,
- 0x16b0, 0x1c00, 0x16b0, 0x17b0, 0x1c10, 0x1c20, 0x1c30, 0x1c40,
+ 0x05b0, 0x05b0, 0x0840, 0x0a40, 0x0860, 0x0860, 0x0860, 0x18a0,
+ 0x18b0, 0x05b0, 0x18c0, 0x18d0, 0x05b0, 0x05b0, 0x05b0, 0x18e0,
+ 0x18f0, 0x05b0, 0x05b0, 0x1020, 0x1900, 0x0f10, 0x0580, 0x1910,
+ 0x07b0, 0x05b0, 0x1920, 0x05b0, 0x1930, 0x1940, 0x0da0, 0x1950,
+ 0x08a0, 0x05b0, 0x05b0, 0x1960, 0x1970, 0x1980, 0x0c20, 0x1990,
+ 0x05b0, 0x05b0, 0x19a0, 0x19b0, 0x19c0, 0x19d0, 0x0c20, 0x0c20,
+ 0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x19e0, 0x19f0, 0x0760, 0x1a00,
+ 0x1a10, 0x1a20, 0x1660, 0x05b0, 0x05b0, 0x05b0, 0x0f50, 0x05b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1a30, 0x0f10,
+ 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40,
+ 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50,
+ 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60,
+ 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70,
+ 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60,
+ 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80,
+ 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60,
+ 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40,
+ 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50,
+ 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60,
+ 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70,
+ 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60,
+ 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80,
+ 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60,
+ 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60,
+ 0x1a70, 0x1a60, 0x1a90, 0x0db0, 0x1aa0, 0x0dd0, 0x0dd0, 0x1ab0,
+ 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0,
+ 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0,
+ 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860,
+ 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860,
+ 0x13b0, 0x1ad0, 0x1ae0, 0x1af0, 0x1b00, 0x05b0, 0x05b0, 0x05b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1600, 0x1b10, 0x05b0, 0x05b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x1b20, 0x0860, 0x05b0, 0x05b0, 0x05b0,
+ 0x05b0, 0x1b30, 0x05b0, 0x05b0, 0x0a40, 0x0860, 0x0860, 0x1b40,
+ 0x0580, 0x1b50, 0x0580, 0x1b60, 0x1b70, 0x1b80, 0x1b90, 0x1130,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1ba0,
+ 0x1bb0, 0x1bc0, 0x16c0, 0x1bd0, 0x16c0, 0x1be0, 0x1bf0, 0x1c00,
+ 0x16c0, 0x1c10, 0x16c0, 0x17e0, 0x1c20, 0x1c30, 0x1c40, 0x1c50,
/* values */
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x0004, 0x0022, 0x0003, 0x0001, 0x0001, 0x0002, 0x0004, 0x0004,
@@ -277,8 +277,6 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x001d, 0x0011,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d,
@@ -310,7 +308,7 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x0004, 0x0004, 0x0011, 0x0011, 0x001c, 0x001c,
0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
0x001d, 0x001d, 0x001b, 0x001b, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001b, 0x001d, 0x001a, 0x001d, 0x001d, 0x0011, 0x0011,
+ 0x001d, 0x001b, 0x001d, 0x001a, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d,
0x001d, 0x0011, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d, 0x0011,
@@ -332,7 +330,7 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x001d, 0x001a, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x001d, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
+ 0x0011, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d,
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x0004,
@@ -375,8 +373,10 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x0011,
0x0011, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x0004, 0x0004, 0x001d, 0x0004, 0x0004,
+ 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d, 0x0004, 0x0004,
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0004, 0x0004,
0x0004, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d,
0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x0004,
@@ -551,10 +551,10 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x0004, 0x001d, 0x001d, 0x001d, 0x001d, 0x0004, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d, 0x0004,
+ 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d, 0x0011,
0x0004, 0x0004, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
- 0x0004, 0x0004, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
+ 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x0011, 0x001d, 0x0011, 0x001d, 0x0011, 0x001d, 0x0011, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
@@ -638,9 +638,11 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x0012, 0x0013, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001e, 0x001e, 0x001e, 0x001e, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
@@ -711,7 +713,7 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d,
@@ -733,8 +735,8 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0012, 0x0013, 0x0022, 0x0022, 0x0022, 0x0022, 0x0017, 0x001d,
0x0022, 0x0022, 0x001d, 0x0022, 0x0022, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x0025, 0x0025, 0x0022, 0x0022, 0x0022, 0x001d,
- 0x0022, 0x0022, 0x0012, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
- 0x0022, 0x0022, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0022, 0x0022, 0x0012, 0x0022, 0x0022, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
@@ -768,10 +770,12 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0011,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0011, 0x0011,
0x0011, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0011,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
@@ -871,8 +875,6 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0011, 0x0026, 0x0011,
0x0026, 0x0026, 0x0011, 0x0026, 0x0026, 0x0011, 0x0026, 0x0026,
0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
- 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
diff --git a/dlls/usp10/mirror.c b/dlls/usp10/mirror.c
index 23dab536c4..daadfa8054 100644
--- a/dlls/usp10/mirror.c
+++ b/dlls/usp10/mirror.c
@@ -1,5 +1,5 @@
/* Unicode BiDi mirroring */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/BidiMirroring.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/BidiMirroring.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/dlls/usp10/shaping.c b/dlls/usp10/shaping.c
index 82435ff2c3..cf6f3b4a97 100644
--- a/dlls/usp10/shaping.c
+++ b/dlls/usp10/shaping.c
@@ -1,10 +1,10 @@
/* Unicode Arabic shaping */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/ArabicShaping.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/ArabicShaping.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
-const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2912] =
+const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2864] =
{
/* level 1 offsets */
0x0100, 0x0110, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160,
@@ -54,64 +54,64 @@ const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2912] =
0x0410, 0x0420, 0x0430, 0x0440, 0x0450, 0x0460, 0x0470, 0x0480,
0x0490, 0x04a0, 0x04b0, 0x0360, 0x04c0, 0x04d0, 0x04e0, 0x04f0,
0x0340, 0x0340, 0x0500, 0x0510, 0x0520, 0x0530, 0x0540, 0x0550,
- 0x0340, 0x0560, 0x0570, 0x0340, 0x0580, 0x0590, 0x05a0, 0x0340,
- 0x0340, 0x0340, 0x05b0, 0x05c0, 0x0340, 0x05d0, 0x05e0, 0x0360,
- 0x05f0, 0x0340, 0x0340, 0x0600, 0x0610, 0x0620, 0x0630, 0x0340,
- 0x0640, 0x0340, 0x0340, 0x0650, 0x0660, 0x0340, 0x0630, 0x0340,
- 0x0670, 0x0340, 0x0340, 0x0650, 0x0680, 0x0640, 0x0340, 0x0690,
- 0x0670, 0x0340, 0x0340, 0x0650, 0x06a0, 0x0340, 0x0630, 0x06b0,
- 0x0640, 0x0340, 0x0340, 0x06c0, 0x0660, 0x06d0, 0x0630, 0x0340,
- 0x06e0, 0x0340, 0x0340, 0x0340, 0x06f0, 0x0340, 0x0340, 0x0340,
- 0x0510, 0x0340, 0x0340, 0x0700, 0x0710, 0x0720, 0x0630, 0x0340,
- 0x0640, 0x0340, 0x0340, 0x06c0, 0x0730, 0x0340, 0x0630, 0x0340,
- 0x0740, 0x0340, 0x0340, 0x0750, 0x0660, 0x0340, 0x0630, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0760, 0x0770, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0780, 0x0790, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x07a0, 0x07b0, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x07c0, 0x0340, 0x07d0, 0x0340, 0x0340, 0x0340, 0x07e0,
- 0x07f0, 0x0800, 0x0360, 0x0810, 0x06d0, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0820, 0x0830, 0x0340, 0x0840, 0x0510, 0x0850,
- 0x0860, 0x0350, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0820, 0x0340, 0x0340,
+ 0x0340, 0x0560, 0x0570, 0x0340, 0x0580, 0x0590, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x05a0, 0x05b0, 0x0340, 0x05c0, 0x05d0, 0x0360,
+ 0x05e0, 0x0340, 0x0340, 0x05f0, 0x0600, 0x0610, 0x0620, 0x0340,
+ 0x0630, 0x0340, 0x0340, 0x0640, 0x0650, 0x0340, 0x0620, 0x0340,
+ 0x0660, 0x0340, 0x0340, 0x0640, 0x0670, 0x0630, 0x0340, 0x0680,
+ 0x0660, 0x0340, 0x0340, 0x0640, 0x0690, 0x0340, 0x0620, 0x0340,
+ 0x0630, 0x0340, 0x0340, 0x06a0, 0x0650, 0x06b0, 0x0620, 0x0340,
+ 0x06c0, 0x0340, 0x0340, 0x0340, 0x06d0, 0x0340, 0x0340, 0x0340,
+ 0x0510, 0x0340, 0x0340, 0x06e0, 0x06f0, 0x0700, 0x0620, 0x0340,
+ 0x0630, 0x0340, 0x0340, 0x06a0, 0x0710, 0x0340, 0x0620, 0x0340,
+ 0x0630, 0x0340, 0x0340, 0x0340, 0x0650, 0x0340, 0x0620, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0720, 0x0730, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0740, 0x0750, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0760, 0x0770, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0780, 0x0340, 0x0790, 0x0340, 0x0340, 0x0340, 0x07a0,
+ 0x07b0, 0x07c0, 0x0360, 0x07d0, 0x06b0, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x07e0, 0x07f0, 0x0340, 0x0800, 0x0510, 0x0810,
+ 0x0820, 0x0350, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x07e0, 0x0340, 0x0340,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0870, 0x0340, 0x0870, 0x0340, 0x0630, 0x0340, 0x0630,
- 0x0340, 0x0340, 0x0340, 0x0880, 0x0890, 0x08a0, 0x0340, 0x0340,
- 0x08b0, 0x0340, 0x0530, 0x0530, 0x0530, 0x0530, 0x0530, 0x08c0,
- 0x08d0, 0x0530, 0x08e0, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x08f0, 0x0900, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0830, 0x0340, 0x0830, 0x0340, 0x0620, 0x0340, 0x0620,
+ 0x0340, 0x0340, 0x0340, 0x0840, 0x0850, 0x0860, 0x0340, 0x0340,
+ 0x0870, 0x0340, 0x0530, 0x0530, 0x0530, 0x0530, 0x0530, 0x0880,
+ 0x0890, 0x0530, 0x08a0, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x08b0, 0x08c0, 0x0340, 0x0340, 0x0340, 0x0340,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0910, 0x0340, 0x0340, 0x0340, 0x0920, 0x0930, 0x0940,
- 0x0340, 0x0340, 0x0340, 0x0950, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0960, 0x0340, 0x0340, 0x0970, 0x06e0, 0x0340, 0x0980, 0x0960,
- 0x0740, 0x0340, 0x0990, 0x0340, 0x0340, 0x0340, 0x09a0, 0x0740,
- 0x0340, 0x0340, 0x09b0, 0x09c0, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x09d0, 0x09e0, 0x09f0,
+ 0x0340, 0x08d0, 0x0340, 0x0340, 0x0340, 0x08e0, 0x08f0, 0x0900,
+ 0x0340, 0x0340, 0x0340, 0x0910, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0920, 0x0340, 0x0340, 0x0930, 0x06c0, 0x0340, 0x0940, 0x0920,
+ 0x0950, 0x0340, 0x0960, 0x0340, 0x0340, 0x0340, 0x0970, 0x0950,
+ 0x0340, 0x0340, 0x0980, 0x0990, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x09a0, 0x09b0, 0x09c0,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0360, 0x0360, 0x0360, 0x0a00,
- 0x0a10, 0x0340, 0x0a20, 0x0340, 0x0340, 0x0340, 0x0a30, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0360, 0x0360, 0x0360, 0x09d0,
+ 0x09e0, 0x0340, 0x09f0, 0x0340, 0x0340, 0x0340, 0x0a00, 0x0340,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0360, 0x0360, 0x0510,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490, 0x0740,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490, 0x0950,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0360, 0x0360,
- 0x0340, 0x0340, 0x0a40, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0a50, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490, 0x0a60,
- 0x0340, 0x0700, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0740,
- 0x0a70, 0x0340, 0x0720, 0x0340, 0x0530, 0x0530, 0x0530, 0x0a80,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0a90, 0x0340, 0x0360, 0x0740,
- 0x0340, 0x0340, 0x0aa0, 0x0340, 0x0ab0, 0x0740, 0x0340, 0x0340,
- 0x05f0, 0x0340, 0x0340, 0x0ac0, 0x0340, 0x0340, 0x0ad0, 0x0340,
- 0x0340, 0x0340, 0x0ae0, 0x0af0, 0x0b00, 0x0340, 0x0340, 0x0650,
- 0x0340, 0x0340, 0x0340, 0x0b10, 0x0640, 0x0340, 0x0b20, 0x06d0,
+ 0x0340, 0x0340, 0x0a10, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0a20, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490, 0x0a30,
+ 0x0340, 0x06e0, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0950,
+ 0x0a40, 0x0340, 0x0700, 0x0340, 0x0530, 0x0530, 0x0530, 0x0a50,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0a60, 0x0340, 0x0360, 0x0950,
+ 0x0340, 0x0340, 0x0a70, 0x0340, 0x0a80, 0x0950, 0x0340, 0x0340,
+ 0x05e0, 0x0340, 0x0340, 0x0a90, 0x0340, 0x0340, 0x0aa0, 0x0340,
+ 0x0340, 0x0340, 0x0ab0, 0x0ac0, 0x0ad0, 0x0340, 0x0340, 0x0640,
+ 0x0340, 0x0340, 0x0340, 0x0ae0, 0x0630, 0x0340, 0x0af0, 0x06b0,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0b30, 0x0340,
- 0x0340, 0x0b40, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0b00, 0x0340,
+ 0x0340, 0x0b10, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
0x0360, 0x0340, 0x0360, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0b50,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0b20,
/* values */
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -189,12 +189,10 @@ const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2912] =
0x0004, 0x0002, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x0004, 0x0004, 0x0004, 0x0004, 0x0002, 0x0004, 0x0000, 0x0000,
0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3404, 0x3400, 0x3404, 0x3404, 0x3404, 0x3404, 0x3400, 0x3402,
- 0x3404, 0x3402, 0x3402, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0404, 0x0404, 0x0604, 0x0b04, 0x0f04, 0x1004, 0x1204, 0x1304,
- 0x0104, 0x0104, 0x0802, 0x0302, 0x3502, 0x0000, 0x0702, 0x0a04,
- 0x0d04, 0x3602, 0x0802, 0x0c04, 0x1104, 0x0000, 0x0404, 0x0404,
- 0x0404, 0x0802, 0x0104, 0x3704, 0x3704, 0x3704, 0x0000, 0x0000,
+ 0x0104, 0x0104, 0x0802, 0x0302, 0x3402, 0x0000, 0x0702, 0x0a04,
+ 0x0d04, 0x3502, 0x0802, 0x0c04, 0x1104, 0x0000, 0x0404, 0x0404,
+ 0x0404, 0x0802, 0x0104, 0x3604, 0x3604, 0x3604, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
@@ -224,8 +222,6 @@ const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2912] =
0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001,
0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0001,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -241,10 +237,6 @@ const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2912] =
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0000,
- 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000,
@@ -315,6 +307,8 @@ const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2912] =
0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,
0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000,
@@ -329,8 +323,8 @@ const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2912] =
0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000,
0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0005, 0x0001, 0x0001,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
diff --git a/dlls/wineps.drv/vertical.c b/dlls/wineps.drv/vertical.c
index 05737604b8..ca4467911c 100644
--- a/dlls/wineps.drv/vertical.c
+++ b/dlls/wineps.drv/vertical.c
@@ -1,5 +1,5 @@
/* Unicode Vertical Orientation */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/VerticalOrientation.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/VerticalOrientation.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/libs/port/compose.c b/libs/port/compose.c
index 71589f47c1..06f6062d24 100644
--- a/libs/port/compose.c
+++ b/libs/port/compose.c
@@ -1,5 +1,5 @@
/* Unicode char composition */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/UnicodeData.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/UnicodeData.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/libs/port/decompose.c b/libs/port/decompose.c
index 221d2e0e92..5e6b2214ec 100644
--- a/libs/port/decompose.c
+++ b/libs/port/decompose.c
@@ -1,5 +1,5 @@
/* Unicode char composition */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/UnicodeData.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/UnicodeData.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/libs/port/digitmap.c b/libs/port/digitmap.c
index 786879a90a..79a86651cc 100644
--- a/libs/port/digitmap.c
+++ b/libs/port/digitmap.c
@@ -1,5 +1,5 @@
/* Unicode digit folding mappings */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/UnicodeData.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/UnicodeData.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/libs/wine/casemap.c b/libs/wine/casemap.c
index bfab3233ee..122f81ff2f 100644
--- a/libs/wine/casemap.c
+++ b/libs/wine/casemap.c
@@ -1,5 +1,5 @@
/* Unicode case mappings */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/UnicodeData.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/UnicodeData.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/libs/wine/wctype.c b/libs/wine/wctype.c
index 8d0a3ed94d..5a79353985 100644
--- a/libs/wine/wctype.c
+++ b/libs/wine/wctype.c
@@ -307,8 +307,8 @@ const unsigned short wine_wctype_table[17152] =
0x2300, 0x2300, 0x2300, 0x2300, 0x2300, 0x2300, 0x2300, 0x2300,
0x2300, 0x2300, 0x2300, 0x2300, 0x2300, 0x2300, 0x2300, 0x2300,
0x2300, 0xd200, 0xd200, 0xd200, 0x0000, 0x0000, 0x2210, 0x0000,
- 0xc300, 0xc300, 0xc300, 0xc300, 0xc300, 0xc300, 0xc300, 0xc300,
- 0xc300, 0xc300, 0xc300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -358,7 +358,7 @@ const unsigned short wine_wctype_table[17152] =
0x1300, 0x1300, 0xd200, 0xd200, 0x0000, 0x0000, 0x1204, 0x1204,
0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204,
0x1300, 0x1300, 0x5200, 0x5200, 0x1200, 0x1200, 0x1200, 0x1200,
- 0x1200, 0x1200, 0x1200, 0x5200, 0x1300, 0x1210, 0x0000, 0x0000,
+ 0x1200, 0x1200, 0x1200, 0x5200, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0xd200, 0xd200, 0x1200, 0x0000, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x1300,
0x1300, 0x0000, 0x0000, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
@@ -390,7 +390,7 @@ const unsigned short wine_wctype_table[17152] =
0x1300, 0x1300, 0xd200, 0xd200, 0x0000, 0x0000, 0x1204, 0x1204,
0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204,
0x1210, 0x5200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x1300, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
+ 0x0000, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0xd200, 0x1200, 0x1200, 0x0000, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x0000, 0x0000, 0x1300,
0x1300, 0x0000, 0x0000, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
@@ -455,14 +455,14 @@ const unsigned short wine_wctype_table[17152] =
0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204,
0x0000, 0x1300, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0xd200, 0xd200, 0x1200, 0x1200, 0x0000, 0x1300, 0x1300, 0x1300,
+ 0x0000, 0xd200, 0x1200, 0x1200, 0x0000, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x0000, 0x1300, 0x1300,
0x1300, 0x0000, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
- 0x1300, 0x1300, 0x1300, 0xd200, 0xd200, 0x1300, 0x1200, 0x1200,
+ 0x1300, 0x1300, 0x1300, 0x0000, 0x0000, 0x1300, 0x1200, 0x1200,
0x1200, 0xd200, 0xd200, 0xd200, 0xd200, 0x0000, 0x1200, 0x1200,
0x1200, 0x0000, 0x1200, 0x1200, 0x1200, 0xd200, 0x1300, 0x1200,
0x0000, 0x0000, 0x0000, 0x0000, 0x1300, 0x1300, 0x1300, 0x1200,
@@ -933,7 +933,7 @@ const unsigned short wine_wctype_table[17152] =
0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
0xd200, 0x1200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
0xd200, 0x1300, 0x1300, 0x1300, 0x1300, 0xd200, 0x1300, 0x1300,
- 0x1300, 0x1300, 0x1200, 0x1200, 0xd200, 0x1300, 0x1300, 0x1200,
+ 0x1300, 0x1300, 0x1200, 0x1200, 0xd200, 0x1300, 0x1300, 0x0000,
0xd200, 0xd200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x1302, 0x1302, 0x1302, 0x1302, 0x1302, 0x1302, 0x1302, 0x1302,
0x1302, 0x1302, 0x1302, 0x1302, 0x1302, 0x1302, 0x1302, 0x1302,
@@ -965,8 +965,8 @@ const unsigned short wine_wctype_table[17152] =
0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
- 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
- 0xd200, 0xd200, 0x0000, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
+ 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
0x1301, 0x1302, 0x1301, 0x1302, 0x1301, 0x1302, 0x1301, 0x1302,
0x1301, 0x1302, 0x1301, 0x1302, 0x1301, 0x1302, 0x1301, 0x1302,
0x1301, 0x1302, 0x1301, 0x1302, 0x1301, 0x1302, 0x1301, 0x1302,
@@ -1054,7 +1054,7 @@ const unsigned short wine_wctype_table[17152] =
0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200,
0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200,
0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200,
- 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200,
+ 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
@@ -1158,7 +1158,7 @@ const unsigned short wine_wctype_table[17152] =
0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
- 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
+ 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0x0000,
0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
@@ -1377,7 +1377,7 @@ const unsigned short wine_wctype_table[17152] =
0xb200, 0xb200, 0x0000, 0x0000, 0x0000, 0xb200, 0xb200, 0xb200,
0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
0xb200, 0x0000, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
- 0xb200, 0xb200, 0xb200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xb200, 0xb200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xb200, 0xb200, 0xb200, 0xb200,
@@ -1455,8 +1455,8 @@ const unsigned short wine_wctype_table[17152] =
0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb300,
0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210,
0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210,
- 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210,
- 0xb210, 0xb210, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -1548,7 +1548,7 @@ const unsigned short wine_wctype_table[17152] =
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
- 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x0000,
+ 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x0000, 0x0000,
0x0000, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
@@ -1697,10 +1697,10 @@ const unsigned short wine_wctype_table[17152] =
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
- 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
- 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
- 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
- 0x1300, 0x1300, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
diff --git a/tools/make_unicode b/tools/make_unicode
index 92b0b64a94..a22cd044b7 100755
--- a/tools/make_unicode
+++ b/tools/make_unicode
@@ -23,7 +23,7 @@ use strict;
# base URLs for www.unicode.org files
my $MAPPINGS = "http://www.unicode.org/Public/MAPPINGS";
-my $UNIDATA = "http://www.unicode.org/Public/10.0.0/ucd";
+my $UNIDATA = "http://www.unicode.org/Public/11.0.0/ucd";
my $REPORTS = "http://www.unicode.org/reports";
my $RFCS = "http://www.rfc-editor.org/rfc";
@@ -1462,7 +1462,12 @@ my %scripts =
"Old_Hungarian" => 134,
"Osage" => 135,
"SignWriting" => 136,
- "Tangut" => 137
+ "Tangut" => 137,
+ # Win10 RS4
+ "Masaram_Gondi" => 138,
+ "Nushu" => 139,
+ "Soyombo" => 140,
+ "Zanabazar_Square" => 141
);
################################################################
--
2.18.0
2
2
Hello all,
It would be really nice to be able to link to Wine's strmbase in tests.
There is already one test that implements large parts of the filter and
pin functionality that is used there, and it seems to me that it would
be in our interest to be able to add more tests that would involve
putting our own filters in graphs, e.g. to be able to test filter and
pin methods directly, or to stream large amounts of data without having
to put it in resource files.
This almost "just works". The only thing preventing simply adding
"#include <wine/strmbase.h>" and linking to strmbase is that the latter
uses debug functions which live in libwine, and so cross-compiling
results in undefined references to wine_dbg_log() and wine_dbg_sprintf().
I've attached a patch as a proof-of-concept, which provides stubs for
these functions (actually they are semi-stubs, as they proved useful
when debugging the patch itself). As can be seen, it reduces the code
necessary to set up test_render_filter_priority() to 1/3 of its original
length (and it might be possible to reduce it further by using
BaseRenderer and TransformFilter).
Is this something that would be workable?
į¼ĻĻĻĻθε,
Zeb
3
5
June 30, 2018
From: MichaÅ Janiszewski <janisozaur(a)gmail.com>
Signed-off-by: MichaÅ Janiszewski <janisozaur(a)gmail.com>
---
dlls/ntdll/rtlbitmap.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/rtlbitmap.c b/dlls/ntdll/rtlbitmap.c
index 318f6fcbd4..c3e9385ec0 100644
--- a/dlls/ntdll/rtlbitmap.c
+++ b/dlls/ntdll/rtlbitmap.c
@@ -157,7 +157,8 @@ VOID WINAPI RtlSetBits(PRTL_BITMAP lpBits, ULONG ulStart, ULONG ulCount)
USHORT initialWord = NTDLL_maskBits[ulCount] << (ulStart & 7);
*lpOut++ |= (initialWord & 0xff);
- *lpOut |= (initialWord >> 8);
+ if (lpOut < ((BYTE *)lpBits->Buffer) + (lpBits->SizeOfBitMap / 8))
+ *lpOut |= (initialWord >> 8);
return;
}
}
@@ -218,7 +219,8 @@ VOID WINAPI RtlClearBits(PRTL_BITMAP lpBits, ULONG ulStart, ULONG ulCount)
USHORT initialWord = ~(NTDLL_maskBits[ulCount] << (ulStart & 7));
*lpOut++ &= (initialWord & 0xff);
- *lpOut &= (initialWord >> 8);
+ if (lpOut < ((BYTE *)lpBits->Buffer) + (lpBits->SizeOfBitMap / 8))
+ *lpOut &= (initialWord >> 8);
return;
}
}
--
2.17.1
1
0
June 30, 2018
From: MichaÅ Janiszewski <janisozaur(a)gmail.com>
Signed-off-by: MichaÅ Janiszewski <janisozaur(a)gmail.com>
---
dlls/ntdll/rtlbitmap.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/rtlbitmap.c b/dlls/ntdll/rtlbitmap.c
index 318f6fcbd4..c3e9385ec0 100644
--- a/dlls/ntdll/rtlbitmap.c
+++ b/dlls/ntdll/rtlbitmap.c
@@ -157,7 +157,8 @@ VOID WINAPI RtlSetBits(PRTL_BITMAP lpBits, ULONG ulStart, ULONG ulCount)
USHORT initialWord = NTDLL_maskBits[ulCount] << (ulStart & 7);
*lpOut++ |= (initialWord & 0xff);
- *lpOut |= (initialWord >> 8);
+ if (lpOut < ((BYTE *)lpBits->Buffer) + (lpBits->SizeOfBitMap / 8))
+ *lpOut |= (initialWord >> 8);
return;
}
}
@@ -218,7 +219,8 @@ VOID WINAPI RtlClearBits(PRTL_BITMAP lpBits, ULONG ulStart, ULONG ulCount)
USHORT initialWord = ~(NTDLL_maskBits[ulCount] << (ulStart & 7));
*lpOut++ &= (initialWord & 0xff);
- *lpOut &= (initialWord >> 8);
+ if (lpOut < ((BYTE *)lpBits->Buffer) + (lpBits->SizeOfBitMap / 8))
+ *lpOut &= (initialWord >> 8);
return;
}
}
--
2.17.1
1
0
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/dwrite/analyzer.c | 4 +
dlls/dwrite/bracket.c | 2 +-
dlls/dwrite/linebreak.c | 214 ++++++++++++------------
dlls/dwrite/mirror.c | 2 +-
dlls/dwrite/scripts.c | 308 ++++++++++++++++++-----------------
dlls/dwrite/scripts.h | 8 +-
dlls/dwrite/tests/analyzer.c | 12 ++
dlls/gdi32/vertical.c | 2 +-
dlls/usp10/bracket.c | 2 +-
dlls/usp10/indicsyllable.c | 86 +++++-----
dlls/usp10/linebreak.c | 214 ++++++++++++------------
dlls/usp10/mirror.c | 2 +-
dlls/usp10/shaping.c | 116 +++++++------
dlls/wineps.drv/vertical.c | 2 +-
libs/port/compose.c | 2 +-
libs/port/decompose.c | 2 +-
libs/port/digitmap.c | 2 +-
libs/wine/casemap.c | 2 +-
libs/wine/wctype.c | 38 ++---
tools/make_unicode | 9 +-
20 files changed, 526 insertions(+), 503 deletions(-)
diff --git a/dlls/dwrite/analyzer.c b/dlls/dwrite/analyzer.c
index 8d553c6d56..19214ee392 100644
--- a/dlls/dwrite/analyzer.c
+++ b/dlls/dwrite/analyzer.c
@@ -184,6 +184,10 @@ static const struct dwritescript_properties dwritescripts_properties[Script_Last
{ /* Osge */ { 0x6567734f, 219, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('o','s','g','e') },
{ /* Sgnw */ { 0x776e6753, 95, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('s','g','n','w') },
{ /* Tang */ { 0x676e6154, 520, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('t','a','n','g') },
+ { /* Gonm */ { 0x6d6e6f47, 313, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('g','o','n','m') },
+ { /* Nshu */ { 0x7568734e, 499, 1, 0x0020, 0, 0, 1, 1, 0, 0, 0 }, _OT('n','s','h','u') },
+ { /* Soyo */ { 0x6f796f53, 329, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('s','o','y','o') },
+ { /* Zanb */ { 0x626e615a, 339, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('z','a','n','b') },
};
#undef _OT
diff --git a/dlls/dwrite/bracket.c b/dlls/dwrite/bracket.c
index 1509d572c9..16df6381a6 100644
--- a/dlls/dwrite/bracket.c
+++ b/dlls/dwrite/bracket.c
@@ -1,5 +1,5 @@
/* Unicode Bidirectional Bracket table */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/BidiBrackets.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/BidiBrackets.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/dlls/dwrite/linebreak.c b/dlls/dwrite/linebreak.c
index 56bde66e9e..cd2ca64952 100644
--- a/dlls/dwrite/linebreak.c
+++ b/dlls/dwrite/linebreak.c
@@ -1,10 +1,10 @@
/* Unicode Line Break Properties */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/LineBreak.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/LineBreak.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
-const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
+const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7264] =
{
/* level 1 offsets */
0x0100, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
@@ -56,22 +56,22 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0790, 0x07a0, 0x07b0,
0x07c0, 0x07d0, 0x05b0, 0x0580, 0x07e0, 0x05b0, 0x05b0, 0x05b0,
0x05b0, 0x05b0, 0x07f0, 0x0800, 0x07b0, 0x05b0, 0x0760, 0x0810,
- 0x05b0, 0x0820, 0x0830, 0x0840, 0x05b0, 0x0850, 0x0860, 0x0870,
- 0x0870, 0x0870, 0x05b0, 0x0880, 0x0870, 0x0890, 0x08a0, 0x0580,
- 0x08b0, 0x05b0, 0x05b0, 0x08c0, 0x0580, 0x08d0, 0x08e0, 0x05b0,
- 0x08f0, 0x0900, 0x0910, 0x0920, 0x0930, 0x0940, 0x0950, 0x0960,
- 0x0970, 0x0900, 0x0910, 0x0980, 0x0990, 0x09a0, 0x09b0, 0x09c0,
- 0x09d0, 0x0690, 0x0910, 0x09e0, 0x09f0, 0x0a00, 0x0950, 0x0a10,
- 0x0a20, 0x0900, 0x0910, 0x09e0, 0x0a30, 0x0a40, 0x0950, 0x0a50,
- 0x0a60, 0x0a70, 0x0a80, 0x0a90, 0x0aa0, 0x0ab0, 0x09b0, 0x0ac0,
- 0x0ad0, 0x0ae0, 0x0910, 0x0af0, 0x0b00, 0x0b10, 0x0950, 0x0b20,
- 0x0b30, 0x0ae0, 0x0910, 0x0b40, 0x0b00, 0x0b50, 0x0950, 0x0b60,
- 0x0ad0, 0x0ae0, 0x05b0, 0x0b70, 0x0b80, 0x0b90, 0x0950, 0x0ba0,
- 0x0bb0, 0x0bc0, 0x05b0, 0x0bd0, 0x0be0, 0x0bf0, 0x09b0, 0x0c00,
- 0x0c10, 0x0c20, 0x0c20, 0x0c30, 0x0c40, 0x0c50, 0x0870, 0x0870,
- 0x0c60, 0x0c70, 0x0c80, 0x0c90, 0x0ca0, 0x0cb0, 0x0870, 0x0870,
+ 0x05b0, 0x0820, 0x0830, 0x0840, 0x05b0, 0x0850, 0x0860, 0x0860,
+ 0x0860, 0x0860, 0x05b0, 0x0870, 0x0860, 0x0880, 0x0890, 0x0580,
+ 0x08a0, 0x05b0, 0x05b0, 0x08b0, 0x0580, 0x08c0, 0x08d0, 0x05b0,
+ 0x08e0, 0x08f0, 0x0900, 0x0910, 0x0920, 0x0930, 0x0940, 0x0950,
+ 0x0960, 0x08f0, 0x0900, 0x0970, 0x0980, 0x0990, 0x09a0, 0x09b0,
+ 0x09c0, 0x0690, 0x0900, 0x09d0, 0x09e0, 0x09f0, 0x0940, 0x0a00,
+ 0x0a10, 0x08f0, 0x0900, 0x09d0, 0x0a20, 0x0a30, 0x0940, 0x0a40,
+ 0x0a50, 0x0a60, 0x0a70, 0x0a80, 0x0a90, 0x0aa0, 0x09a0, 0x0ab0,
+ 0x0ac0, 0x0ad0, 0x0900, 0x0ae0, 0x0af0, 0x0b00, 0x0940, 0x0b10,
+ 0x0b20, 0x0ad0, 0x0900, 0x0b30, 0x0af0, 0x0b40, 0x0940, 0x0b50,
+ 0x0b60, 0x0ad0, 0x05b0, 0x0b70, 0x0b80, 0x0b90, 0x0940, 0x0ba0,
+ 0x0bb0, 0x0bc0, 0x05b0, 0x0bd0, 0x0be0, 0x0bf0, 0x09a0, 0x0c00,
+ 0x0c10, 0x0c20, 0x0c20, 0x0c30, 0x0c40, 0x0c50, 0x0860, 0x0860,
+ 0x0c60, 0x0c70, 0x0c80, 0x0c90, 0x0ca0, 0x0cb0, 0x0860, 0x0860,
0x0cc0, 0x0cd0, 0x07b0, 0x0ce0, 0x0cf0, 0x05b0, 0x0d00, 0x0d10,
- 0x0d20, 0x0d30, 0x0580, 0x0d40, 0x0d50, 0x0d60, 0x0870, 0x0870,
+ 0x0d20, 0x0d30, 0x0580, 0x0d40, 0x0d50, 0x0d60, 0x0860, 0x0860,
0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x0d70, 0x0c20, 0x0c20, 0x0c20,
0x0c20, 0x0d80, 0x05b0, 0x05b0, 0x0d90, 0x05b0, 0x05b0, 0x05b0,
0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0db0, 0x0db0,
@@ -86,16 +86,16 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0e70, 0x0e80, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0e90, 0x0ea0,
0x0eb0, 0x0ec0, 0x05b0, 0x0ed0, 0x05b0, 0x0ee0, 0x0eb0, 0x0ef0,
0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x0f00, 0x0f10, 0x0e50,
- 0x0f20, 0x0f10, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0a50,
+ 0x0f20, 0x0f10, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0a40,
0x0f30, 0x05b0, 0x0f40, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0f50,
0x05b0, 0x0840, 0x0f60, 0x0f60, 0x0f70, 0x0c20, 0x0f80, 0x0f90,
0x0c20, 0x0c20, 0x0fa0, 0x0c20, 0x0fb0, 0x0fc0, 0x05b0, 0x05b0,
0x05b0, 0x0fd0, 0x0c20, 0x0c20, 0x0c20, 0x0fe0, 0x0c20, 0x0ff0,
- 0x0f10, 0x0f10, 0x0f80, 0x1000, 0x0870, 0x0870, 0x0870, 0x0870,
+ 0x0f10, 0x0f10, 0x0f80, 0x1000, 0x0860, 0x0860, 0x0860, 0x0860,
0x1010, 0x05b0, 0x05b0, 0x1020, 0x1030, 0x1040, 0x1050, 0x1060,
0x1070, 0x05b0, 0x1080, 0x07b0, 0x05b0, 0x05b0, 0x07f0, 0x1090,
0x05b0, 0x05b0, 0x1020, 0x10a0, 0x10b0, 0x07b0, 0x05b0, 0x10c0,
- 0x0ea0, 0x0870, 0x0870, 0x0870, 0x0a50, 0x10d0, 0x10e0, 0x10f0,
+ 0x0ea0, 0x0860, 0x0860, 0x0860, 0x0a40, 0x10d0, 0x10e0, 0x10f0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0580, 0x0580, 0x0580, 0x1100,
0x05b0, 0x0e60, 0x05b0, 0x05b0, 0x0e60, 0x1110, 0x05b0, 0x1120,
@@ -108,80 +108,80 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x1320, 0x1330, 0x1340, 0x1350, 0x05b0, 0x05b0, 0x1360, 0x05b0,
0x1370, 0x1380, 0x1390, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x13a0,
- 0x05b0, 0x05b0, 0x13b0, 0x0870, 0x0860, 0x0870, 0x13c0, 0x13c0,
- 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13d0,
- 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x1270, 0x13c0, 0x13c0, 0x13e0,
- 0x13c0, 0x13f0, 0x1400, 0x1410, 0x1420, 0x1430, 0x1440, 0x05b0,
- 0x1450, 0x1460, 0x05b0, 0x1470, 0x1480, 0x05b0, 0x1490, 0x14a0,
- 0x05b0, 0x14b0, 0x05b0, 0x14c0, 0x14d0, 0x14e0, 0x14f0, 0x1500,
- 0x1510, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1520, 0x1530, 0x1540,
- 0x13c0, 0x1550, 0x05b0, 0x05b0, 0x1560, 0x05b0, 0x1570, 0x05b0,
+ 0x05b0, 0x05b0, 0x13b0, 0x0860, 0x13c0, 0x0860, 0x13d0, 0x13d0,
+ 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13e0,
+ 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x1270, 0x13d0, 0x13d0, 0x13f0,
+ 0x13d0, 0x1400, 0x1410, 0x1420, 0x1430, 0x1440, 0x1450, 0x05b0,
+ 0x1460, 0x1470, 0x05b0, 0x1480, 0x1490, 0x05b0, 0x14a0, 0x14b0,
+ 0x05b0, 0x14c0, 0x05b0, 0x14d0, 0x14e0, 0x14f0, 0x1500, 0x1510,
+ 0x1520, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1530, 0x1540, 0x1550,
+ 0x13d0, 0x1560, 0x05b0, 0x05b0, 0x1570, 0x05b0, 0x1580, 0x05b0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
- 0x1580, 0x1590, 0x05b0, 0x05b0, 0x05b0, 0x1370, 0x05b0, 0x15a0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x15b0, 0x05b0, 0x15c0,
- 0x05b0, 0x15d0, 0x05b0, 0x15e0, 0x0910, 0x15f0, 0x1600, 0x0870,
+ 0x1590, 0x15a0, 0x05b0, 0x05b0, 0x05b0, 0x1370, 0x05b0, 0x15b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x15c0, 0x05b0, 0x15d0,
+ 0x05b0, 0x15e0, 0x05b0, 0x15f0, 0x0900, 0x1600, 0x1610, 0x0860,
0x05b0, 0x05b0, 0x0840, 0x05b0, 0x05b0, 0x0840, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1610, 0x1620,
- 0x05b0, 0x05b0, 0x0d90, 0x05b0, 0x05b0, 0x05b0, 0x1630, 0x1640,
- 0x05b0, 0x13b0, 0x1650, 0x1650, 0x1650, 0x1650, 0x0580, 0x0580,
- 0x1660, 0x1670, 0x1680, 0x1690, 0x16a0, 0x0870, 0x0870, 0x0870,
- 0x16b0, 0x16c0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16d0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16e0, 0x0870, 0x16f0,
- 0x1700, 0x1710, 0x1720, 0x1730, 0x1740, 0x16b0, 0x1750, 0x16b0,
- 0x1760, 0x1770, 0x1780, 0x16b0, 0x1750, 0x16b0, 0x1760, 0x1790,
- 0x17a0, 0x16b0, 0x17b0, 0x17c0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x17b0, 0x16b0, 0x16b0, 0x17d0, 0x16b0, 0x16b0, 0x16d0, 0x17e0,
- 0x16b0, 0x17b0, 0x16b0, 0x16b0, 0x17f0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x17b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
- 0x16b0, 0x1800, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x1810, 0x16b0, 0x16b0, 0x16b0, 0x1820, 0x05b0, 0x05b0, 0x10c0,
- 0x1830, 0x05b0, 0x1840, 0x0870, 0x05b0, 0x05b0, 0x1610, 0x1850,
- 0x05b0, 0x1860, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1870,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1620, 0x1630,
+ 0x05b0, 0x05b0, 0x0d90, 0x05b0, 0x05b0, 0x05b0, 0x1640, 0x1650,
+ 0x05b0, 0x13b0, 0x1660, 0x1660, 0x1660, 0x1660, 0x0580, 0x0580,
+ 0x1670, 0x1680, 0x1690, 0x16a0, 0x16b0, 0x0860, 0x0860, 0x0860,
+ 0x16c0, 0x16d0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16e0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16f0, 0x0860, 0x1700,
+ 0x1710, 0x1720, 0x1730, 0x1740, 0x1750, 0x16c0, 0x1760, 0x16c0,
+ 0x1770, 0x1780, 0x1790, 0x16c0, 0x1760, 0x16c0, 0x1770, 0x17a0,
+ 0x17b0, 0x16c0, 0x17c0, 0x17d0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x17e0, 0x16c0, 0x16c0, 0x17f0, 0x16c0, 0x16c0, 0x16e0, 0x1800,
+ 0x16c0, 0x17e0, 0x16c0, 0x16c0, 0x1810, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x17e0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
+ 0x16c0, 0x1820, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x1830, 0x16c0, 0x16c0, 0x16c0, 0x1840, 0x05b0, 0x05b0, 0x10c0,
+ 0x1850, 0x05b0, 0x1860, 0x0860, 0x05b0, 0x05b0, 0x1620, 0x1870,
+ 0x05b0, 0x1880, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1890,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x0840, 0x0a50, 0x0870, 0x0870, 0x0870, 0x1880,
- 0x1890, 0x05b0, 0x18a0, 0x18b0, 0x05b0, 0x05b0, 0x05b0, 0x18c0,
- 0x18d0, 0x05b0, 0x05b0, 0x1020, 0x18e0, 0x0f10, 0x0580, 0x18f0,
- 0x07b0, 0x05b0, 0x1900, 0x05b0, 0x1910, 0x1920, 0x0da0, 0x1930,
- 0x08b0, 0x05b0, 0x05b0, 0x1940, 0x1950, 0x1960, 0x0c20, 0x1970,
- 0x05b0, 0x05b0, 0x1980, 0x1990, 0x19a0, 0x19b0, 0x0c20, 0x0c20,
- 0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x19c0, 0x19d0, 0x0760, 0x19e0,
- 0x19f0, 0x1a00, 0x1650, 0x05b0, 0x05b0, 0x05b0, 0x0f50, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1a10, 0x0f10,
- 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20,
- 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30,
- 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40,
- 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50,
- 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40,
- 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60,
- 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40,
- 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20,
- 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30,
- 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40,
- 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50,
- 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40,
- 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60,
- 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40,
- 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40,
- 0x1a50, 0x1a40, 0x1a70, 0x0db0, 0x1a80, 0x0dd0, 0x0dd0, 0x1a90,
- 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0,
- 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0,
- 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
- 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
- 0x13b0, 0x1ab0, 0x1ac0, 0x1ad0, 0x1ae0, 0x05b0, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1af0, 0x1b00, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x1b10, 0x0870, 0x05b0, 0x05b0, 0x05b0,
- 0x05b0, 0x1b20, 0x05b0, 0x05b0, 0x0a50, 0x0870, 0x0870, 0x1b30,
- 0x0580, 0x1b40, 0x0580, 0x1b50, 0x1b60, 0x1b70, 0x1b80, 0x1130,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1b90,
- 0x1ba0, 0x1bb0, 0x16b0, 0x1bc0, 0x16b0, 0x1bd0, 0x1be0, 0x1bf0,
- 0x16b0, 0x1c00, 0x16b0, 0x17b0, 0x1c10, 0x1c20, 0x1c30, 0x1c40,
+ 0x05b0, 0x05b0, 0x0840, 0x0a40, 0x0860, 0x0860, 0x0860, 0x18a0,
+ 0x18b0, 0x05b0, 0x18c0, 0x18d0, 0x05b0, 0x05b0, 0x05b0, 0x18e0,
+ 0x18f0, 0x05b0, 0x05b0, 0x1020, 0x1900, 0x0f10, 0x0580, 0x1910,
+ 0x07b0, 0x05b0, 0x1920, 0x05b0, 0x1930, 0x1940, 0x0da0, 0x1950,
+ 0x08a0, 0x05b0, 0x05b0, 0x1960, 0x1970, 0x1980, 0x0c20, 0x1990,
+ 0x05b0, 0x05b0, 0x19a0, 0x19b0, 0x19c0, 0x19d0, 0x0c20, 0x0c20,
+ 0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x19e0, 0x19f0, 0x0760, 0x1a00,
+ 0x1a10, 0x1a20, 0x1660, 0x05b0, 0x05b0, 0x05b0, 0x0f50, 0x05b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1a30, 0x0f10,
+ 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40,
+ 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50,
+ 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60,
+ 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70,
+ 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60,
+ 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80,
+ 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60,
+ 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40,
+ 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50,
+ 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60,
+ 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70,
+ 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60,
+ 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80,
+ 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60,
+ 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60,
+ 0x1a70, 0x1a60, 0x1a90, 0x0db0, 0x1aa0, 0x0dd0, 0x0dd0, 0x1ab0,
+ 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0,
+ 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0,
+ 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860,
+ 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860,
+ 0x13b0, 0x1ad0, 0x1ae0, 0x1af0, 0x1b00, 0x05b0, 0x05b0, 0x05b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1600, 0x1b10, 0x05b0, 0x05b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x1b20, 0x0860, 0x05b0, 0x05b0, 0x05b0,
+ 0x05b0, 0x1b30, 0x05b0, 0x05b0, 0x0a40, 0x0860, 0x0860, 0x1b40,
+ 0x0580, 0x1b50, 0x0580, 0x1b60, 0x1b70, 0x1b80, 0x1b90, 0x1130,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1ba0,
+ 0x1bb0, 0x1bc0, 0x16c0, 0x1bd0, 0x16c0, 0x1be0, 0x1bf0, 0x1c00,
+ 0x16c0, 0x1c10, 0x16c0, 0x17e0, 0x1c20, 0x1c30, 0x1c40, 0x1c50,
/* values */
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x0004, 0x0022, 0x0003, 0x0001, 0x0001, 0x0002, 0x0004, 0x0004,
@@ -277,8 +277,6 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x001d, 0x0011,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d,
@@ -310,7 +308,7 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x0004, 0x0004, 0x0011, 0x0011, 0x001c, 0x001c,
0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
0x001d, 0x001d, 0x001b, 0x001b, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001b, 0x001d, 0x001a, 0x001d, 0x001d, 0x0011, 0x0011,
+ 0x001d, 0x001b, 0x001d, 0x001a, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d,
0x001d, 0x0011, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d, 0x0011,
@@ -332,7 +330,7 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x001d, 0x001a, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x001d, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
+ 0x0011, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d,
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x0004,
@@ -375,8 +373,10 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x0011,
0x0011, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x0004, 0x0004, 0x001d, 0x0004, 0x0004,
+ 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d, 0x0004, 0x0004,
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0004, 0x0004,
0x0004, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d,
0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x0004,
@@ -551,10 +551,10 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x0004, 0x001d, 0x001d, 0x001d, 0x001d, 0x0004, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d, 0x0004,
+ 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d, 0x0011,
0x0004, 0x0004, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
- 0x0004, 0x0004, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
+ 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x0011, 0x001d, 0x0011, 0x001d, 0x0011, 0x001d, 0x0011, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
@@ -638,9 +638,11 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x0012, 0x0013, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001e, 0x001e, 0x001e, 0x001e, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
@@ -711,7 +713,7 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d,
@@ -733,8 +735,8 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0012, 0x0013, 0x0022, 0x0022, 0x0022, 0x0022, 0x0017, 0x001d,
0x0022, 0x0022, 0x001d, 0x0022, 0x0022, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x0025, 0x0025, 0x0022, 0x0022, 0x0022, 0x001d,
- 0x0022, 0x0022, 0x0012, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
- 0x0022, 0x0022, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0022, 0x0022, 0x0012, 0x0022, 0x0022, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
@@ -768,10 +770,12 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0011,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0011, 0x0011,
0x0011, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0011,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
@@ -871,8 +875,6 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0011, 0x0026, 0x0011,
0x0026, 0x0026, 0x0011, 0x0026, 0x0026, 0x0011, 0x0026, 0x0026,
0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
- 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
diff --git a/dlls/dwrite/mirror.c b/dlls/dwrite/mirror.c
index 23dab536c4..daadfa8054 100644
--- a/dlls/dwrite/mirror.c
+++ b/dlls/dwrite/mirror.c
@@ -1,5 +1,5 @@
/* Unicode BiDi mirroring */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/BidiMirroring.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/BidiMirroring.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/dlls/dwrite/scripts.c b/dlls/dwrite/scripts.c
index ce139f2932..5d7846afdf 100644
--- a/dlls/dwrite/scripts.c
+++ b/dlls/dwrite/scripts.c
@@ -1,63 +1,63 @@
/* Unicode Script IDs */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/Scripts.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/Scripts.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
-const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
+const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6880] =
{
/* level 1 offsets */
0x0100, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
0x0180, 0x0190, 0x01a0, 0x01b0, 0x01c0, 0x01d0, 0x01e0, 0x01f0,
0x0200, 0x0210, 0x0220, 0x0230, 0x0240, 0x0240, 0x0250, 0x0260,
0x0270, 0x0280, 0x0290, 0x02a0, 0x02b0, 0x02c0, 0x0110, 0x02d0,
- 0x02e0, 0x02f0, 0x0300, 0x0300, 0x0310, 0x0300, 0x0300, 0x0300,
- 0x0320, 0x0300, 0x0300, 0x0330, 0x0340, 0x0350, 0x0360, 0x0370,
- 0x0380, 0x0390, 0x03a0, 0x03b0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03d0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03e0,
- 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x0400, 0x0410, 0x0420, 0x0430,
- 0x0440, 0x0450, 0x0460, 0x0470, 0x0210, 0x0210, 0x0210, 0x0210,
+ 0x02e0, 0x02f0, 0x0300, 0x0310, 0x0320, 0x0300, 0x0300, 0x0300,
+ 0x0330, 0x0300, 0x0300, 0x0340, 0x0350, 0x0360, 0x0370, 0x0380,
+ 0x0390, 0x03a0, 0x03b0, 0x03c0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03e0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0,
+ 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03d0, 0x03f0,
+ 0x0400, 0x0400, 0x0400, 0x0400, 0x0410, 0x0420, 0x0430, 0x0440,
+ 0x0450, 0x0460, 0x0470, 0x0480, 0x0210, 0x0210, 0x0210, 0x0210,
0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210,
0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210,
0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210,
0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210,
- 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0480,
- 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490,
- 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490,
- 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490,
- 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490, 0x0490,
- 0x0490, 0x03c0, 0x04a0, 0x04b0, 0x04c0, 0x04d0, 0x04e0, 0x04f0,
+ 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0490,
+ 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0,
+ 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0,
+ 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0,
+ 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0, 0x04a0,
+ 0x04a0, 0x03d0, 0x04b0, 0x04c0, 0x04d0, 0x04e0, 0x04f0, 0x0500,
/* level 2 offsets */
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0510, 0x0520, 0x0510, 0x0520,
- 0x0500, 0x0500, 0x0530, 0x0530, 0x0540, 0x0550, 0x0540, 0x0550,
- 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540,
- 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540,
- 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540,
- 0x0540, 0x0540, 0x0540, 0x0560, 0x0500, 0x0500, 0x0570, 0x0500,
- 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0590,
- 0x05a0, 0x05b0, 0x05c0, 0x05b0, 0x05b0, 0x05b0, 0x05d0, 0x05b0,
- 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e0,
- 0x05f0, 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e0,
- 0x05e0, 0x05e0, 0x05e0, 0x0600, 0x0610, 0x0620, 0x0600, 0x0610,
- 0x0630, 0x0640, 0x0650, 0x0650, 0x0660, 0x0650, 0x0670, 0x0680,
- 0x0690, 0x06a0, 0x06b0, 0x06b0, 0x06c0, 0x06d0, 0x06b0, 0x06e0,
- 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06f0, 0x06b0, 0x06b0,
- 0x0700, 0x0710, 0x0710, 0x0710, 0x0720, 0x06b0, 0x06b0, 0x06b0,
- 0x0730, 0x0730, 0x0730, 0x0740, 0x0750, 0x0750, 0x0750, 0x0760,
- 0x0770, 0x0770, 0x0780, 0x0790, 0x07a0, 0x07b0, 0x07c0, 0x07d0,
- 0x07d0, 0x07d0, 0x06b0, 0x07e0, 0x07d0, 0x07f0, 0x0800, 0x06b0,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0520, 0x0530, 0x0520, 0x0530,
+ 0x0510, 0x0510, 0x0540, 0x0540, 0x0550, 0x0560, 0x0550, 0x0560,
+ 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550,
+ 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550,
+ 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550,
+ 0x0550, 0x0550, 0x0550, 0x0570, 0x0510, 0x0510, 0x0580, 0x0510,
+ 0x0590, 0x0590, 0x0590, 0x0590, 0x0590, 0x0590, 0x0590, 0x05a0,
+ 0x05b0, 0x05c0, 0x05d0, 0x05c0, 0x05c0, 0x05c0, 0x05e0, 0x05c0,
+ 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0,
+ 0x0600, 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0, 0x05f0,
+ 0x05f0, 0x05f0, 0x05f0, 0x0610, 0x0620, 0x0630, 0x0610, 0x0620,
+ 0x0640, 0x0650, 0x0660, 0x0660, 0x0670, 0x0660, 0x0680, 0x0690,
+ 0x06a0, 0x06b0, 0x06c0, 0x06c0, 0x06d0, 0x06e0, 0x06c0, 0x06f0,
+ 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x0700, 0x06c0, 0x06c0,
+ 0x0710, 0x0720, 0x0720, 0x0720, 0x0730, 0x06c0, 0x06c0, 0x06c0,
+ 0x0740, 0x0740, 0x0740, 0x0750, 0x0760, 0x0760, 0x0760, 0x0770,
+ 0x0780, 0x0780, 0x0790, 0x07a0, 0x07b0, 0x07c0, 0x07d0, 0x07d0,
+ 0x07d0, 0x07d0, 0x06c0, 0x07e0, 0x07d0, 0x07f0, 0x0800, 0x06c0,
0x0810, 0x0810, 0x0810, 0x0810, 0x0810, 0x0820, 0x0830, 0x0810,
0x0840, 0x0850, 0x0860, 0x0870, 0x0880, 0x0890, 0x08a0, 0x08b0,
0x08c0, 0x08d0, 0x08e0, 0x08f0, 0x0900, 0x0910, 0x0920, 0x0930,
@@ -66,108 +66,110 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0a40, 0x0a50, 0x0a60, 0x0a70, 0x0a80, 0x0a90, 0x0aa0, 0x0ab0,
0x0ac0, 0x0ad0, 0x0ae0, 0x0af0, 0x0b00, 0x0b10, 0x0b20, 0x0b30,
0x0b40, 0x0b50, 0x0b60, 0x0b70, 0x0b80, 0x0b90, 0x0ba0, 0x0bb0,
- 0x0bc0, 0x0bd0, 0x0be0, 0x0be0, 0x0bf0, 0x0c00, 0x0c10, 0x0be0,
- 0x0c20, 0x0c30, 0x0c40, 0x0c50, 0x0c60, 0x0c70, 0x0c80, 0x0c90,
- 0x0ca0, 0x0cb0, 0x0cb0, 0x0cc0, 0x0cb0, 0x0cd0, 0x07d0, 0x07d0,
- 0x0ce0, 0x0cf0, 0x0d00, 0x0d10, 0x0d20, 0x0d30, 0x07d0, 0x07d0,
- 0x0d40, 0x0d40, 0x0d40, 0x0d40, 0x0d50, 0x0d40, 0x0d60, 0x0d70,
- 0x0d40, 0x0d50, 0x0d40, 0x0d80, 0x0d80, 0x0d90, 0x07d0, 0x07d0,
- 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0,
- 0x0da0, 0x0da0, 0x0db0, 0x0db0, 0x0dc0, 0x0db0, 0x0db0, 0x0dd0,
- 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0,
- 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0,
- 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0e00, 0x0e10, 0x0df0, 0x0df0,
- 0x0e00, 0x0df0, 0x0df0, 0x0e20, 0x0e30, 0x0e40, 0x0df0, 0x0df0,
- 0x0df0, 0x0e30, 0x0df0, 0x0df0, 0x0df0, 0x0e50, 0x0df0, 0x0e60,
- 0x0df0, 0x0e70, 0x0e80, 0x0e80, 0x0e80, 0x0e80, 0x0e80, 0x0e90,
- 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0,
- 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0,
- 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0,
- 0x0eb0, 0x0ec0, 0x0ed0, 0x0ed0, 0x0ed0, 0x0ed0, 0x0ee0, 0x0ef0,
- 0x0f00, 0x0f10, 0x0f20, 0x0f30, 0x0f40, 0x0f50, 0x0f60, 0x0f70,
- 0x0f80, 0x0f80, 0x0f80, 0x0f80, 0x0f80, 0x0f90, 0x0fa0, 0x0fa0,
- 0x0fb0, 0x0fc0, 0x0fd0, 0x0fd0, 0x0fd0, 0x0fd0, 0x0fd0, 0x0fe0,
- 0x0fd0, 0x0fd0, 0x0ff0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x1000,
- 0x1010, 0x1020, 0x1030, 0x1030, 0x1040, 0x1050, 0x1060, 0x1070,
- 0x1080, 0x1080, 0x1090, 0x1080, 0x10a0, 0x10b0, 0x0f80, 0x0f80,
- 0x10c0, 0x10d0, 0x10e0, 0x10e0, 0x10e0, 0x10f0, 0x10e0, 0x1100,
- 0x1110, 0x1110, 0x1120, 0x1130, 0x07d0, 0x07d0, 0x07d0, 0x07d0,
- 0x1140, 0x1140, 0x1140, 0x1140, 0x1150, 0x1140, 0x1140, 0x1160,
- 0x1170, 0x1170, 0x1170, 0x1170, 0x1180, 0x1180, 0x1180, 0x1190,
- 0x11a0, 0x11a0, 0x11a0, 0x11b0, 0x11c0, 0x11d0, 0x11d0, 0x11d0,
- 0x11e0, 0x07d0, 0x07d0, 0x07d0, 0x11f0, 0x1200, 0x1210, 0x1220,
- 0x0540, 0x0540, 0x1230, 0x0540, 0x0540, 0x1240, 0x1250, 0x1260,
- 0x0540, 0x0540, 0x0540, 0x1270, 0x0580, 0x0580, 0x0580, 0x1280,
- 0x05b0, 0x1290, 0x05b0, 0x05b0, 0x1290, 0x12a0, 0x05b0, 0x12b0,
- 0x05b0, 0x05b0, 0x05b0, 0x12c0, 0x12c0, 0x12d0, 0x05b0, 0x12e0,
- 0x12f0, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x1300, 0x1310,
- 0x1320, 0x1330, 0x0500, 0x0500, 0x07d0, 0x0580, 0x0580, 0x1340,
- 0x0500, 0x0500, 0x1350, 0x1360, 0x1370, 0x0500, 0x0540, 0x0540,
- 0x1380, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500,
- 0x0500, 0x0500, 0x1390, 0x07d0, 0x13a0, 0x07d0, 0x0500, 0x0500,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500,
- 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0,
- 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0, 0x13b0,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x13c0,
- 0x0500, 0x13d0, 0x0500, 0x13e0, 0x13f0, 0x1400, 0x1410, 0x07d0,
- 0x1420, 0x1420, 0x1430, 0x1420, 0x1420, 0x1430, 0x0540, 0x0540,
- 0x1440, 0x1440, 0x1440, 0x1440, 0x1440, 0x1440, 0x1440, 0x1450,
- 0x0db0, 0x0db0, 0x0dc0, 0x1460, 0x1460, 0x1460, 0x1470, 0x1480,
- 0x0df0, 0x1490, 0x14a0, 0x14a0, 0x14a0, 0x14a0, 0x05e0, 0x05e0,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x14b0, 0x07d0, 0x07d0, 0x07d0,
- 0x14c0, 0x14d0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14e0,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14f0, 0x07d0, 0x1500,
- 0x1510, 0x0500, 0x1520, 0x1530, 0x1540, 0x1550, 0x1550, 0x1550,
- 0x1550, 0x1560, 0x1570, 0x1580, 0x1580, 0x1580, 0x1580, 0x1590,
- 0x15a0, 0x15b0, 0x15c0, 0x15d0, 0x0de0, 0x0de0, 0x0de0, 0x0de0,
- 0x15e0, 0x0500, 0x15b0, 0x15f0, 0x0500, 0x0500, 0x1600, 0x1580,
- 0x0de0, 0x15e0, 0x0500, 0x0500, 0x0500, 0x0500, 0x0de0, 0x1610,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x1580, 0x1580, 0x1620,
- 0x1580, 0x1580, 0x1580, 0x1580, 0x1580, 0x1630, 0x0500, 0x0500,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0,
- 0x14c0, 0x14c0, 0x14c0, 0x14f0, 0x0500, 0x0500, 0x0500, 0x0500,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x1640, 0x07d0,
+ 0x0bc0, 0x0bd0, 0x0be0, 0x0bf0, 0x0c00, 0x0c10, 0x0c20, 0x0be0,
+ 0x0c30, 0x0c40, 0x0c50, 0x0c60, 0x0c70, 0x0c80, 0x0c90, 0x0ca0,
+ 0x0cb0, 0x0cc0, 0x0cc0, 0x0cd0, 0x0cc0, 0x0ce0, 0x07d0, 0x07d0,
+ 0x0cf0, 0x0d00, 0x0d10, 0x0d20, 0x0d30, 0x0d40, 0x07d0, 0x07d0,
+ 0x0d50, 0x0d50, 0x0d50, 0x0d50, 0x0d60, 0x0d50, 0x0d70, 0x0d80,
+ 0x0d50, 0x0d60, 0x0d50, 0x0d90, 0x0d90, 0x0da0, 0x07d0, 0x07d0,
+ 0x0db0, 0x0db0, 0x0db0, 0x0db0, 0x0db0, 0x0db0, 0x0db0, 0x0db0,
+ 0x0db0, 0x0db0, 0x0dc0, 0x0dc0, 0x0dd0, 0x0dc0, 0x0dc0, 0x0de0,
+ 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0,
+ 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0,
+ 0x0e00, 0x0e00, 0x0e00, 0x0e00, 0x0e10, 0x0e20, 0x0e00, 0x0e00,
+ 0x0e10, 0x0e00, 0x0e00, 0x0e30, 0x0e40, 0x0e50, 0x0e00, 0x0e00,
+ 0x0e00, 0x0e40, 0x0e00, 0x0e00, 0x0e00, 0x0e60, 0x0e00, 0x0e70,
+ 0x0e00, 0x0e80, 0x0e90, 0x0e90, 0x0e90, 0x0e90, 0x0e90, 0x0ea0,
+ 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0,
+ 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0,
+ 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0,
+ 0x0ec0, 0x0ed0, 0x0ee0, 0x0ee0, 0x0ee0, 0x0ee0, 0x0ef0, 0x0f00,
+ 0x0f10, 0x0f20, 0x0f30, 0x0f40, 0x0f50, 0x0f60, 0x0f70, 0x0f80,
+ 0x0f90, 0x0f90, 0x0f90, 0x0f90, 0x0f90, 0x0fa0, 0x0fb0, 0x0fb0,
+ 0x0fc0, 0x0fd0, 0x0fe0, 0x0fe0, 0x0fe0, 0x0fe0, 0x0fe0, 0x0ff0,
+ 0x0fe0, 0x0fe0, 0x1000, 0x0eb0, 0x0eb0, 0x0eb0, 0x0eb0, 0x1010,
+ 0x1020, 0x1030, 0x1040, 0x1040, 0x1050, 0x1060, 0x1070, 0x1080,
+ 0x1090, 0x1090, 0x10a0, 0x1090, 0x10b0, 0x10c0, 0x0f90, 0x0f90,
+ 0x10d0, 0x10e0, 0x10f0, 0x10f0, 0x10f0, 0x1100, 0x10f0, 0x1110,
+ 0x1120, 0x1120, 0x1130, 0x1140, 0x07d0, 0x07d0, 0x07d0, 0x07d0,
+ 0x1150, 0x1150, 0x1150, 0x1150, 0x1160, 0x1150, 0x1150, 0x1170,
+ 0x1180, 0x1180, 0x1180, 0x1180, 0x1190, 0x1190, 0x1190, 0x11a0,
+ 0x11b0, 0x11b0, 0x11b0, 0x11c0, 0x11d0, 0x11e0, 0x11e0, 0x11e0,
+ 0x11f0, 0x07d0, 0x07d0, 0x07d0, 0x1200, 0x1210, 0x1220, 0x1230,
+ 0x0550, 0x0550, 0x1240, 0x0550, 0x0550, 0x1250, 0x1260, 0x1270,
+ 0x0550, 0x0550, 0x0550, 0x1280, 0x0590, 0x0590, 0x0590, 0x1290,
+ 0x05c0, 0x12a0, 0x05c0, 0x05c0, 0x12a0, 0x12b0, 0x05c0, 0x12c0,
+ 0x05c0, 0x05c0, 0x05c0, 0x12d0, 0x12d0, 0x12e0, 0x05c0, 0x12f0,
+ 0x1300, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x1310, 0x1320,
+ 0x1330, 0x1340, 0x0510, 0x1330, 0x07d0, 0x0590, 0x0590, 0x1350,
+ 0x0510, 0x0510, 0x1360, 0x1370, 0x1380, 0x0510, 0x0550, 0x0550,
+ 0x1390, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x1330,
+ 0x0510, 0x0510, 0x13a0, 0x07d0, 0x13b0, 0x07d0, 0x0510, 0x0510,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510,
+ 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0,
+ 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x13d0,
+ 0x0510, 0x13e0, 0x0510, 0x13f0, 0x1400, 0x1410, 0x1420, 0x07d0,
+ 0x1430, 0x1430, 0x1440, 0x1430, 0x1430, 0x1440, 0x0550, 0x0550,
+ 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1460,
+ 0x0dc0, 0x0dc0, 0x0dd0, 0x1470, 0x1470, 0x1470, 0x1480, 0x1490,
+ 0x0e00, 0x14a0, 0x14b0, 0x14b0, 0x14b0, 0x14b0, 0x05f0, 0x05f0,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x14c0, 0x07d0, 0x07d0, 0x07d0,
+ 0x14d0, 0x14e0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14f0,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x1500, 0x07d0, 0x1510,
+ 0x1520, 0x0510, 0x1530, 0x1540, 0x1550, 0x1560, 0x1560, 0x1560,
+ 0x1560, 0x1570, 0x1580, 0x1590, 0x1590, 0x1590, 0x1590, 0x15a0,
+ 0x15b0, 0x15c0, 0x15d0, 0x15e0, 0x0df0, 0x0df0, 0x0df0, 0x0df0,
+ 0x15f0, 0x0510, 0x15c0, 0x1600, 0x0510, 0x0510, 0x1610, 0x1590,
+ 0x0df0, 0x15f0, 0x0510, 0x0510, 0x0510, 0x0510, 0x0df0, 0x1620,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x1590, 0x1590, 0x1630,
+ 0x1590, 0x1590, 0x1590, 0x1590, 0x1590, 0x1640, 0x0510, 0x0510,
+ 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0,
+ 0x14d0, 0x14d0, 0x14d0, 0x1500, 0x0510, 0x0510, 0x0510, 0x0510,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x1500, 0x07d0, 0x07d0,
0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650,
0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650,
0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650, 0x1650,
0x1660, 0x1650, 0x1650, 0x1650, 0x1670, 0x1680, 0x1680, 0x1680,
0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690,
0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690,
- 0x1690, 0x1690, 0x16a0, 0x07d0, 0x05e0, 0x05e0, 0x05e0, 0x05e0,
- 0x05e0, 0x05e0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16c0,
- 0x0500, 0x0500, 0x16d0, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540,
- 0x16e0, 0x0540, 0x16f0, 0x1700, 0x07d0, 0x07d0, 0x07d0, 0x1710,
- 0x1720, 0x1720, 0x1730, 0x14b0, 0x1740, 0x1740, 0x1740, 0x1750,
- 0x1760, 0x1760, 0x1760, 0x1760, 0x1770, 0x1780, 0x0810, 0x1790,
- 0x17a0, 0x17a0, 0x17b0, 0x17c0, 0x17c0, 0x17d0, 0x0de0, 0x17e0,
- 0x17f0, 0x17f0, 0x17f0, 0x17f0, 0x1800, 0x1810, 0x0da0, 0x1820,
- 0x1830, 0x1830, 0x1830, 0x1840, 0x1850, 0x1860, 0x0da0, 0x0da0,
- 0x1870, 0x1870, 0x1870, 0x1870, 0x1880, 0x1890, 0x18a0, 0x18b0,
- 0x18c0, 0x18d0, 0x14a0, 0x0540, 0x0540, 0x18e0, 0x18f0, 0x0e80,
- 0x0e80, 0x0e80, 0x0e80, 0x0e80, 0x18a0, 0x18a0, 0x1900, 0x1910,
- 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de0,
- 0x0de0, 0x0de0, 0x1920, 0x0de0, 0x1930, 0x0de0, 0x0de0, 0x1940,
+ 0x1690, 0x1690, 0x16a0, 0x07d0, 0x05f0, 0x05f0, 0x05f0, 0x05f0,
+ 0x05f0, 0x05f0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16c0,
+ 0x0510, 0x0510, 0x16d0, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550,
+ 0x16e0, 0x0550, 0x16f0, 0x1700, 0x07d0, 0x07d0, 0x07d0, 0x1710,
+ 0x1720, 0x1720, 0x1730, 0x1740, 0x1750, 0x1750, 0x1750, 0x1760,
+ 0x1770, 0x1770, 0x1770, 0x1770, 0x1780, 0x1790, 0x0810, 0x17a0,
+ 0x17b0, 0x17b0, 0x17c0, 0x17d0, 0x17d0, 0x17e0, 0x0df0, 0x17f0,
+ 0x1800, 0x1800, 0x1800, 0x1800, 0x1810, 0x1820, 0x0db0, 0x1830,
+ 0x1840, 0x1840, 0x1840, 0x1850, 0x1860, 0x1870, 0x0db0, 0x0db0,
+ 0x1880, 0x1880, 0x1880, 0x1880, 0x1890, 0x18a0, 0x18b0, 0x18c0,
+ 0x18d0, 0x18e0, 0x14b0, 0x0550, 0x0550, 0x18f0, 0x1900, 0x0e90,
+ 0x0e90, 0x0e90, 0x0e90, 0x0e90, 0x18b0, 0x18b0, 0x1910, 0x1920,
+ 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0df0,
+ 0x0df0, 0x0df0, 0x1930, 0x0df0, 0x1940, 0x0df0, 0x0df0, 0x1950,
0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0,
0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0, 0x07d0,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x1950, 0x14c0,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x1960, 0x07d0, 0x07d0,
- 0x1970, 0x1980, 0x0650, 0x1990, 0x19a0, 0x06b0, 0x06b0, 0x06b0,
- 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x19b0, 0x19c0, 0x06b0, 0x06b0,
- 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0,
- 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0,
- 0x06b0, 0x06b0, 0x06b0, 0x19d0, 0x07d0, 0x06b0, 0x06b0, 0x06b0,
- 0x06b0, 0x19e0, 0x06b0, 0x06b0, 0x19f0, 0x07d0, 0x07d0, 0x1a00,
- 0x0580, 0x14b0, 0x1a10, 0x0500, 0x0500, 0x1a20, 0x1a30, 0x1a40,
- 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x1a50,
- 0x1a60, 0x0500, 0x0510, 0x0520, 0x0510, 0x0520, 0x1a70, 0x1570,
- 0x1580, 0x1a80, 0x0de0, 0x15e0, 0x1a90, 0x1aa0, 0x1ab0, 0x1ac0,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x1960, 0x14d0,
+ 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x14d0, 0x1970, 0x07d0, 0x07d0,
+ 0x1980, 0x1990, 0x0660, 0x19a0, 0x19b0, 0x06c0, 0x06c0, 0x06c0,
+ 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x19c0, 0x19d0, 0x06c0, 0x06c0,
+ 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0,
+ 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0,
+ 0x06c0, 0x06c0, 0x06c0, 0x19e0, 0x07d0, 0x06c0, 0x06c0, 0x06c0,
+ 0x06c0, 0x19f0, 0x06c0, 0x06c0, 0x1a00, 0x07d0, 0x07d0, 0x1a10,
+ 0x0590, 0x1740, 0x1a20, 0x0510, 0x0510, 0x1a30, 0x1a40, 0x1a50,
+ 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x1a60,
+ 0x1a70, 0x0510, 0x0520, 0x0530, 0x0520, 0x0530, 0x1a80, 0x1580,
+ 0x1590, 0x1a90, 0x0df0, 0x15f0, 0x1aa0, 0x1ab0, 0x1ac0, 0x1ad0,
/* values */
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
@@ -222,7 +224,7 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0001, 0x0003, 0x0003,
0x0003, 0x0003, 0x0003, 0x0003, 0x0001, 0x0003, 0x0003, 0x0003,
0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,
- 0x0003, 0x0003, 0x0003, 0x0001, 0x0003, 0x0000, 0x0003, 0x0001,
+ 0x0003, 0x0003, 0x0003, 0x0001, 0x0001, 0x0000, 0x0003, 0x0001,
0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,
0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,
0x0001, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,
@@ -257,8 +259,6 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
0x0039, 0x0039, 0x0039, 0x0039, 0x0000, 0x0000, 0x0039, 0x0000,
- 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051,
- 0x0051, 0x0051, 0x0051, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0000, 0x0003, 0x0003,
@@ -288,7 +288,7 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0009, 0x0009, 0x0009, 0x0009, 0x0000, 0x0000, 0x0009, 0x0009,
0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
- 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0000, 0x0000,
+ 0x0009, 0x0009, 0x0009, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0020, 0x0020, 0x0020, 0x0000, 0x0020, 0x0020, 0x0020,
0x0020, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020,
0x0020, 0x0000, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
@@ -320,7 +320,7 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x001f, 0x001f, 0x001f, 0x001f, 0x0000, 0x0000, 0x001f, 0x001f,
0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
0x001f, 0x001f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x0000, 0x001f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0045, 0x0045, 0x0045, 0x0000, 0x0045, 0x0045, 0x0045,
0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0000, 0x0000, 0x0045,
0x0045, 0x0000, 0x0000, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
@@ -385,12 +385,14 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
0x0000, 0x002b, 0x002b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0038, 0x0038, 0x0038, 0x0038, 0x0000, 0x0038, 0x0038, 0x0038,
+ 0x0000, 0x0038, 0x0038, 0x0038, 0x0000, 0x0038, 0x0038, 0x0038,
0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0000, 0x0038, 0x0038,
0x0038, 0x0000, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
+ 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
+ 0x0038, 0x0038, 0x0038, 0x0000, 0x0000, 0x0038, 0x0038, 0x0038,
0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0000, 0x0038, 0x0038,
0x0038, 0x0000, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
0x0000, 0x0000, 0x0000, 0x0000, 0x0038, 0x0038, 0x0038, 0x0038,
@@ -589,7 +591,7 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
0x0002, 0x0001, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0001,
- 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0001, 0x0000,
0x0002, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x0016, 0x0031, 0x0031, 0x0031, 0x0031,
@@ -601,8 +603,8 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0016, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x001e,
- 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
- 0x0002, 0x0002, 0x0000, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
+ 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0000, 0x0000,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0000, 0x0000,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
@@ -649,7 +651,7 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001,
@@ -671,8 +673,8 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0000,
0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0000,
- 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
@@ -706,7 +708,7 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x0000,
0x0000, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
@@ -721,8 +723,6 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0000,
0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
- 0x0021, 0x0021, 0x0021, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f,
0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f,
0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f,
@@ -753,6 +753,8 @@ const unsigned short DECLSPEC_HIDDEN wine_scripts_table[6864] =
0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
0x0050, 0x0050, 0x0050, 0x0050, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
diff --git a/dlls/dwrite/scripts.h b/dlls/dwrite/scripts.h
index 7202f402e6..bf38988b0a 100644
--- a/dlls/dwrite/scripts.h
+++ b/dlls/dwrite/scripts.h
@@ -1,5 +1,5 @@
/* Unicode Script IDs */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/Scripts.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/Scripts.txt */
/* DO NOT EDIT!! */
enum unicode_script_id {
@@ -141,5 +141,9 @@ enum unicode_script_id {
Script_Osage = 135,
Script_SignWriting = 136,
Script_Tangut = 137,
- Script_LastId = 137
+ Script_Masaram_Gondi = 138,
+ Script_Nushu = 139,
+ Script_Soyombo = 140,
+ Script_Zanabazar_Square = 141,
+ Script_LastId = 141
};
diff --git a/dlls/dwrite/tests/analyzer.c b/dlls/dwrite/tests/analyzer.c
index 77369a7ef9..77ec020cd6 100644
--- a/dlls/dwrite/tests/analyzer.c
+++ b/dlls/dwrite/tests/analyzer.c
@@ -1192,6 +1192,18 @@ static void test_GetScriptProperties(void)
hr = IDWriteTextAnalyzer1_GetScriptProperties(analyzer1, sa, &props);
ok(hr == S_OK, "got 0x%08x\n", hr);
+ for (sa.script = 0;; sa.script++) {
+ hr = IDWriteTextAnalyzer1_GetScriptProperties(analyzer1, sa, &props);
+ if (FAILED(hr))
+ break;
+
+ ok(0, "%u: { /* %.4s */ { 0x%04x, %d, %d, 0x%04x, %d, %d, %d, %d, %d, %d, %d } },\n",
+ sa.script, (char*)&props.isoScriptCode, props.isoScriptCode, props.isoScriptNumber,
+ props.clusterLookahead, props.justificationCharacter, props.restrictCaretToClusters,
+ props.usesWordDividers, props.isDiscreteWriting, props.isBlockWriting, props.isDistributedWithinCluster,
+ props.isConnectedWriting, props.isCursiveWriting);
+ }
+
IDWriteTextAnalyzer1_Release(analyzer1);
}
diff --git a/dlls/gdi32/vertical.c b/dlls/gdi32/vertical.c
index 05737604b8..ca4467911c 100644
--- a/dlls/gdi32/vertical.c
+++ b/dlls/gdi32/vertical.c
@@ -1,5 +1,5 @@
/* Unicode Vertical Orientation */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/VerticalOrientation.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/VerticalOrientation.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/dlls/usp10/bracket.c b/dlls/usp10/bracket.c
index 1509d572c9..16df6381a6 100644
--- a/dlls/usp10/bracket.c
+++ b/dlls/usp10/bracket.c
@@ -1,5 +1,5 @@
/* Unicode Bidirectional Bracket table */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/BidiBrackets.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/BidiBrackets.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/dlls/usp10/indicsyllable.c b/dlls/usp10/indicsyllable.c
index dbdac5d4ae..709b1d4ae8 100644
--- a/dlls/usp10/indicsyllable.c
+++ b/dlls/usp10/indicsyllable.c
@@ -1,11 +1,11 @@
/* Unicode Indic Syllabic Category */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/IndicSyllabicCategory.txt */
-/* and from http://www.unicode.org/Public/10.0.0/ucd/IndicPositionalCategory.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/IndicSyllabicCategory.txt */
+/* and from http://www.unicode.org/Public/11.0.0/ucd/IndicPositionalCategory.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
-const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
+const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3296] =
{
/* level 1 offsets */
0x0100, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
@@ -53,41 +53,41 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x04b0, 0x04c0, 0x04d0, 0x04e0, 0x04f0, 0x0500, 0x0400, 0x0270,
0x0510, 0x0520, 0x0370, 0x0530, 0x0540, 0x0550, 0x0330, 0x0270,
0x0560, 0x0520, 0x0370, 0x0570, 0x0580, 0x0590, 0x0330, 0x05a0,
- 0x05b0, 0x0520, 0x02f0, 0x05c0, 0x05d0, 0x05e0, 0x0330, 0x05f0,
- 0x0600, 0x0610, 0x02f0, 0x0620, 0x0630, 0x0640, 0x0400, 0x0650,
- 0x0660, 0x02f0, 0x0670, 0x0680, 0x0690, 0x0290, 0x0270, 0x0270,
- 0x06a0, 0x06b0, 0x06c0, 0x06d0, 0x06e0, 0x06f0, 0x0270, 0x0270,
- 0x0270, 0x0700, 0x0710, 0x0720, 0x0730, 0x02f0, 0x0740, 0x0750,
- 0x0760, 0x0770, 0x0780, 0x0790, 0x07a0, 0x0270, 0x0270, 0x0270,
- 0x02f0, 0x02f0, 0x07b0, 0x07c0, 0x07d0, 0x07e0, 0x07f0, 0x0800,
- 0x0810, 0x0820, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
- 0x0830, 0x0840, 0x0850, 0x0840, 0x0850, 0x0860, 0x0830, 0x0870,
- 0x02f0, 0x02f0, 0x0880, 0x0890, 0x08a0, 0x08b0, 0x0290, 0x0270,
- 0x08c0, 0x0670, 0x08d0, 0x08e0, 0x0400, 0x02f0, 0x08f0, 0x0900,
- 0x02f0, 0x02f0, 0x0910, 0x0920, 0x0930, 0x0290, 0x0270, 0x0270,
- 0x02f0, 0x0940, 0x02f0, 0x02f0, 0x0950, 0x0960, 0x0970, 0x0980,
+ 0x0560, 0x0520, 0x02f0, 0x05b0, 0x05c0, 0x05d0, 0x0330, 0x05e0,
+ 0x05f0, 0x0600, 0x02f0, 0x0610, 0x0620, 0x0630, 0x0400, 0x0640,
+ 0x0650, 0x02f0, 0x0660, 0x0670, 0x0680, 0x0290, 0x0270, 0x0270,
+ 0x0690, 0x06a0, 0x06b0, 0x06c0, 0x06d0, 0x06e0, 0x0270, 0x0270,
+ 0x0270, 0x06f0, 0x0700, 0x0710, 0x0720, 0x02f0, 0x0730, 0x0740,
+ 0x0750, 0x0760, 0x0770, 0x0780, 0x0790, 0x0270, 0x0270, 0x0270,
+ 0x02f0, 0x02f0, 0x07a0, 0x07b0, 0x07c0, 0x07d0, 0x07e0, 0x07f0,
+ 0x0800, 0x0810, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
+ 0x0820, 0x0830, 0x0840, 0x0830, 0x0840, 0x0850, 0x0820, 0x0860,
+ 0x02f0, 0x02f0, 0x0870, 0x0880, 0x0890, 0x08a0, 0x0290, 0x0270,
+ 0x08b0, 0x0660, 0x08c0, 0x08d0, 0x0400, 0x02f0, 0x08e0, 0x08f0,
+ 0x02f0, 0x02f0, 0x0900, 0x0910, 0x0920, 0x0290, 0x0270, 0x0270,
+ 0x02f0, 0x0930, 0x02f0, 0x02f0, 0x0940, 0x0950, 0x0960, 0x0970,
0x0290, 0x0290, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
- 0x0990, 0x0850, 0x02f0, 0x09a0, 0x09b0, 0x0290, 0x09c0, 0x09d0,
- 0x09e0, 0x02f0, 0x09f0, 0x0a00, 0x02f0, 0x02f0, 0x0a10, 0x0a20,
- 0x02f0, 0x02f0, 0x0a30, 0x0a40, 0x0a50, 0x0270, 0x0270, 0x0270,
- 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0a60, 0x0a70, 0x0a80,
+ 0x0980, 0x0840, 0x02f0, 0x0990, 0x09a0, 0x0290, 0x09b0, 0x09c0,
+ 0x09d0, 0x02f0, 0x09e0, 0x09f0, 0x02f0, 0x02f0, 0x0a00, 0x0a10,
+ 0x02f0, 0x02f0, 0x0a20, 0x0a30, 0x0a40, 0x0270, 0x0270, 0x0270,
+ 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0a50, 0x0a60, 0x0a70,
0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
- 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0a90,
- 0x0aa0, 0x0ab0, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0ac0,
- 0x0ad0, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
+ 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0a80,
+ 0x0a90, 0x0aa0, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0ab0,
+ 0x0ac0, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
- 0x0270, 0x0270, 0x0270, 0x0270, 0x0ae0, 0x0270, 0x0270, 0x0270,
- 0x0af0, 0x02f0, 0x0b00, 0x0270, 0x02f0, 0x0b10, 0x0b20, 0x0b30,
- 0x0b40, 0x0b50, 0x02f0, 0x0b60, 0x0b70, 0x0290, 0x0b80, 0x0b90,
- 0x0ba0, 0x02f0, 0x0bb0, 0x02f0, 0x0bc0, 0x0bd0, 0x0270, 0x0270,
- 0x0be0, 0x02f0, 0x02f0, 0x0bf0, 0x0c00, 0x0290, 0x0c10, 0x0c20,
- 0x0c30, 0x02f0, 0x0c40, 0x0c50, 0x0c60, 0x0290, 0x02f0, 0x0c70,
- 0x02f0, 0x02f0, 0x02f0, 0x0c80, 0x0c90, 0x0270, 0x0ca0, 0x0cb0,
+ 0x0270, 0x0270, 0x0270, 0x0270, 0x0ad0, 0x0270, 0x0270, 0x0270,
+ 0x0ae0, 0x02f0, 0x0af0, 0x0270, 0x02f0, 0x0b00, 0x0b10, 0x0b20,
+ 0x0b30, 0x0b40, 0x02f0, 0x0b50, 0x0b60, 0x0290, 0x0b70, 0x0b80,
+ 0x0b90, 0x02f0, 0x0ba0, 0x02f0, 0x0bb0, 0x0bc0, 0x0270, 0x0270,
+ 0x0bd0, 0x02f0, 0x02f0, 0x0be0, 0x0bf0, 0x0290, 0x0c00, 0x0c10,
+ 0x0c20, 0x02f0, 0x0c30, 0x0c40, 0x0c50, 0x0290, 0x02f0, 0x0c60,
+ 0x02f0, 0x02f0, 0x02f0, 0x0c70, 0x0c80, 0x0270, 0x0c90, 0x0ca0,
0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
- 0x0270, 0x0270, 0x0270, 0x0270, 0x0cc0, 0x0cd0, 0x0ce0, 0x0290,
+ 0x0270, 0x0270, 0x0270, 0x0270, 0x0cb0, 0x0cc0, 0x0cd0, 0x0290,
/* values */
0x5f00, 0x9c00, 0x9500, 0x9500, 0x8600, 0x8600, 0x8600, 0x8600,
- 0x7e00, 0x6e00, 0x6c00, 0x6000, 0x5100, 0x3c00, 0x2600, 0x1900,
+ 0x7e00, 0x6e00, 0x5d00, 0x5100, 0x4200, 0x2d00, 0x1700, 0x0a00,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -129,7 +129,7 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0107,
0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a,
0x000a, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0501, 0x0501, 0x0102, 0x0000, 0x0006, 0x0006, 0x0006,
0x0006, 0x0006, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006,
0x000a, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x0000,
@@ -151,7 +151,7 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x0107, 0x0607, 0x0607, 0x0607, 0x0607, 0x0507, 0x0000, 0x0507,
0x0507, 0x0007, 0x0000, 0x0107, 0x0107, 0x0605, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x000a, 0x0519, 0x0519, 0x0519, 0x0504, 0x0504, 0x0504,
+ 0x0000, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x000a, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x000a,
0x000a, 0x000a, 0x0000, 0x0000, 0x0604, 0x0003, 0x0107, 0x0507,
0x0107, 0x0607, 0x0607, 0x0607, 0x0607, 0x0000, 0x0000, 0x0207,
@@ -192,10 +192,8 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0000,
0x0000, 0x001f, 0x001f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0501, 0x0501, 0x0101, 0x0102, 0x0000, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0006, 0x0006,
0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
- 0x000a, 0x000a, 0x000a, 0x0516, 0x0516, 0x0003, 0x0107, 0x0107,
+ 0x000a, 0x000a, 0x000a, 0x0000, 0x0000, 0x0003, 0x0107, 0x0107,
0x0107, 0x0107, 0x0107, 0x0607, 0x0607, 0x0000, 0x0207, 0x0207,
0x0207, 0x0000, 0x0407, 0x0407, 0x0407, 0x0505, 0x0015, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x000b, 0x000b, 0x0107,
@@ -310,12 +308,12 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x0607, 0x0207, 0x0107, 0x0507, 0x0000, 0x0000, 0x0000, 0x0000,
0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0006, 0x0006, 0x0006,
- 0x0006, 0x0006, 0x0006, 0x000a, 0x000a, 0x020e, 0x060e, 0x010d,
- 0x050f, 0x050f, 0x050c, 0x060d, 0x060d, 0x060d, 0x060d, 0x0000,
+ 0x0006, 0x0006, 0x0006, 0x000a, 0x000a, 0x020e, 0x060e, 0x010f,
+ 0x050f, 0x050f, 0x050f, 0x060f, 0x060f, 0x060f, 0x060f, 0x0000,
0x0017, 0x0107, 0x0507, 0x0107, 0x0107, 0x0507, 0x0507, 0x0507,
0x0507, 0x0607, 0x0607, 0x0507, 0x0607, 0x0107, 0x0207, 0x0207,
- 0x0207, 0x0207, 0x0207, 0x0507, 0x0501, 0x0513, 0x0513, 0x0513,
- 0x0513, 0x0513, 0x0516, 0x0521, 0x0521, 0x0000, 0x0000, 0x0621,
+ 0x0207, 0x0207, 0x0207, 0x0507, 0x0507, 0x0513, 0x0513, 0x0513,
+ 0x0513, 0x0513, 0x0521, 0x0521, 0x0521, 0x0000, 0x0000, 0x0621,
0x0501, 0x0501, 0x0501, 0x050c, 0x0102, 0x0006, 0x0006, 0x0006,
0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
0x000a, 0x000a, 0x000a, 0x000a, 0x0504, 0x0107, 0x0507, 0x0507,
@@ -346,7 +344,7 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x0619, 0x0619, 0x0519, 0x0519, 0x0619, 0x0619, 0x0619, 0x0619,
0x0519, 0x0119, 0x0d00, 0x0d00, 0x0d00, 0x0d00, 0x0d00, 0x0d00,
0x0d00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0002, 0x0002, 0x0519, 0x0000, 0x0000, 0x0119,
+ 0x0000, 0x0000, 0x0002, 0x0002, 0x0519, 0x0000, 0x0000, 0x0000,
0x0019, 0x0019, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0521, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -380,7 +378,7 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0519, 0x0519, 0x0519, 0x0519, 0x0519, 0x0519, 0x0519, 0x0519,
0x0519, 0x0519, 0x0519, 0x0519, 0x0519, 0x0519, 0x0519, 0x0519,
- 0x0519, 0x0519, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0519, 0x0519, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
@@ -393,7 +391,7 @@ const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3312] =
0x0501, 0x0501, 0x050c, 0x0102, 0x0006, 0x0006, 0x0006, 0x0006,
0x0006, 0x000a, 0x000a, 0x000a, 0x0006, 0x0006, 0x0006, 0x000a,
0x000a, 0x000a, 0x000a, 0x0504, 0x0107, 0x0107, 0x0507, 0x0507,
- 0x0607, 0x0607, 0x0207, 0x0207, 0x0507, 0x010d, 0x010e, 0x000e,
+ 0x0607, 0x0607, 0x0207, 0x0207, 0x0507, 0x010d, 0x010e, 0x010e,
0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0507, 0x0000, 0x000a,
diff --git a/dlls/usp10/linebreak.c b/dlls/usp10/linebreak.c
index 56bde66e9e..cd2ca64952 100644
--- a/dlls/usp10/linebreak.c
+++ b/dlls/usp10/linebreak.c
@@ -1,10 +1,10 @@
/* Unicode Line Break Properties */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/LineBreak.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/LineBreak.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
-const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
+const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7264] =
{
/* level 1 offsets */
0x0100, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
@@ -56,22 +56,22 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0790, 0x07a0, 0x07b0,
0x07c0, 0x07d0, 0x05b0, 0x0580, 0x07e0, 0x05b0, 0x05b0, 0x05b0,
0x05b0, 0x05b0, 0x07f0, 0x0800, 0x07b0, 0x05b0, 0x0760, 0x0810,
- 0x05b0, 0x0820, 0x0830, 0x0840, 0x05b0, 0x0850, 0x0860, 0x0870,
- 0x0870, 0x0870, 0x05b0, 0x0880, 0x0870, 0x0890, 0x08a0, 0x0580,
- 0x08b0, 0x05b0, 0x05b0, 0x08c0, 0x0580, 0x08d0, 0x08e0, 0x05b0,
- 0x08f0, 0x0900, 0x0910, 0x0920, 0x0930, 0x0940, 0x0950, 0x0960,
- 0x0970, 0x0900, 0x0910, 0x0980, 0x0990, 0x09a0, 0x09b0, 0x09c0,
- 0x09d0, 0x0690, 0x0910, 0x09e0, 0x09f0, 0x0a00, 0x0950, 0x0a10,
- 0x0a20, 0x0900, 0x0910, 0x09e0, 0x0a30, 0x0a40, 0x0950, 0x0a50,
- 0x0a60, 0x0a70, 0x0a80, 0x0a90, 0x0aa0, 0x0ab0, 0x09b0, 0x0ac0,
- 0x0ad0, 0x0ae0, 0x0910, 0x0af0, 0x0b00, 0x0b10, 0x0950, 0x0b20,
- 0x0b30, 0x0ae0, 0x0910, 0x0b40, 0x0b00, 0x0b50, 0x0950, 0x0b60,
- 0x0ad0, 0x0ae0, 0x05b0, 0x0b70, 0x0b80, 0x0b90, 0x0950, 0x0ba0,
- 0x0bb0, 0x0bc0, 0x05b0, 0x0bd0, 0x0be0, 0x0bf0, 0x09b0, 0x0c00,
- 0x0c10, 0x0c20, 0x0c20, 0x0c30, 0x0c40, 0x0c50, 0x0870, 0x0870,
- 0x0c60, 0x0c70, 0x0c80, 0x0c90, 0x0ca0, 0x0cb0, 0x0870, 0x0870,
+ 0x05b0, 0x0820, 0x0830, 0x0840, 0x05b0, 0x0850, 0x0860, 0x0860,
+ 0x0860, 0x0860, 0x05b0, 0x0870, 0x0860, 0x0880, 0x0890, 0x0580,
+ 0x08a0, 0x05b0, 0x05b0, 0x08b0, 0x0580, 0x08c0, 0x08d0, 0x05b0,
+ 0x08e0, 0x08f0, 0x0900, 0x0910, 0x0920, 0x0930, 0x0940, 0x0950,
+ 0x0960, 0x08f0, 0x0900, 0x0970, 0x0980, 0x0990, 0x09a0, 0x09b0,
+ 0x09c0, 0x0690, 0x0900, 0x09d0, 0x09e0, 0x09f0, 0x0940, 0x0a00,
+ 0x0a10, 0x08f0, 0x0900, 0x09d0, 0x0a20, 0x0a30, 0x0940, 0x0a40,
+ 0x0a50, 0x0a60, 0x0a70, 0x0a80, 0x0a90, 0x0aa0, 0x09a0, 0x0ab0,
+ 0x0ac0, 0x0ad0, 0x0900, 0x0ae0, 0x0af0, 0x0b00, 0x0940, 0x0b10,
+ 0x0b20, 0x0ad0, 0x0900, 0x0b30, 0x0af0, 0x0b40, 0x0940, 0x0b50,
+ 0x0b60, 0x0ad0, 0x05b0, 0x0b70, 0x0b80, 0x0b90, 0x0940, 0x0ba0,
+ 0x0bb0, 0x0bc0, 0x05b0, 0x0bd0, 0x0be0, 0x0bf0, 0x09a0, 0x0c00,
+ 0x0c10, 0x0c20, 0x0c20, 0x0c30, 0x0c40, 0x0c50, 0x0860, 0x0860,
+ 0x0c60, 0x0c70, 0x0c80, 0x0c90, 0x0ca0, 0x0cb0, 0x0860, 0x0860,
0x0cc0, 0x0cd0, 0x07b0, 0x0ce0, 0x0cf0, 0x05b0, 0x0d00, 0x0d10,
- 0x0d20, 0x0d30, 0x0580, 0x0d40, 0x0d50, 0x0d60, 0x0870, 0x0870,
+ 0x0d20, 0x0d30, 0x0580, 0x0d40, 0x0d50, 0x0d60, 0x0860, 0x0860,
0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x0d70, 0x0c20, 0x0c20, 0x0c20,
0x0c20, 0x0d80, 0x05b0, 0x05b0, 0x0d90, 0x05b0, 0x05b0, 0x05b0,
0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0db0, 0x0db0,
@@ -86,16 +86,16 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0e70, 0x0e80, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0e90, 0x0ea0,
0x0eb0, 0x0ec0, 0x05b0, 0x0ed0, 0x05b0, 0x0ee0, 0x0eb0, 0x0ef0,
0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x0f00, 0x0f10, 0x0e50,
- 0x0f20, 0x0f10, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0a50,
+ 0x0f20, 0x0f10, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0a40,
0x0f30, 0x05b0, 0x0f40, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0f50,
0x05b0, 0x0840, 0x0f60, 0x0f60, 0x0f70, 0x0c20, 0x0f80, 0x0f90,
0x0c20, 0x0c20, 0x0fa0, 0x0c20, 0x0fb0, 0x0fc0, 0x05b0, 0x05b0,
0x05b0, 0x0fd0, 0x0c20, 0x0c20, 0x0c20, 0x0fe0, 0x0c20, 0x0ff0,
- 0x0f10, 0x0f10, 0x0f80, 0x1000, 0x0870, 0x0870, 0x0870, 0x0870,
+ 0x0f10, 0x0f10, 0x0f80, 0x1000, 0x0860, 0x0860, 0x0860, 0x0860,
0x1010, 0x05b0, 0x05b0, 0x1020, 0x1030, 0x1040, 0x1050, 0x1060,
0x1070, 0x05b0, 0x1080, 0x07b0, 0x05b0, 0x05b0, 0x07f0, 0x1090,
0x05b0, 0x05b0, 0x1020, 0x10a0, 0x10b0, 0x07b0, 0x05b0, 0x10c0,
- 0x0ea0, 0x0870, 0x0870, 0x0870, 0x0a50, 0x10d0, 0x10e0, 0x10f0,
+ 0x0ea0, 0x0860, 0x0860, 0x0860, 0x0a40, 0x10d0, 0x10e0, 0x10f0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0580, 0x0580, 0x0580, 0x1100,
0x05b0, 0x0e60, 0x05b0, 0x05b0, 0x0e60, 0x1110, 0x05b0, 0x1120,
@@ -108,80 +108,80 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x1320, 0x1330, 0x1340, 0x1350, 0x05b0, 0x05b0, 0x1360, 0x05b0,
0x1370, 0x1380, 0x1390, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x13a0,
- 0x05b0, 0x05b0, 0x13b0, 0x0870, 0x0860, 0x0870, 0x13c0, 0x13c0,
- 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13d0,
- 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x1270, 0x13c0, 0x13c0, 0x13e0,
- 0x13c0, 0x13f0, 0x1400, 0x1410, 0x1420, 0x1430, 0x1440, 0x05b0,
- 0x1450, 0x1460, 0x05b0, 0x1470, 0x1480, 0x05b0, 0x1490, 0x14a0,
- 0x05b0, 0x14b0, 0x05b0, 0x14c0, 0x14d0, 0x14e0, 0x14f0, 0x1500,
- 0x1510, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1520, 0x1530, 0x1540,
- 0x13c0, 0x1550, 0x05b0, 0x05b0, 0x1560, 0x05b0, 0x1570, 0x05b0,
+ 0x05b0, 0x05b0, 0x13b0, 0x0860, 0x13c0, 0x0860, 0x13d0, 0x13d0,
+ 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x13e0,
+ 0x13d0, 0x13d0, 0x13d0, 0x13d0, 0x1270, 0x13d0, 0x13d0, 0x13f0,
+ 0x13d0, 0x1400, 0x1410, 0x1420, 0x1430, 0x1440, 0x1450, 0x05b0,
+ 0x1460, 0x1470, 0x05b0, 0x1480, 0x1490, 0x05b0, 0x14a0, 0x14b0,
+ 0x05b0, 0x14c0, 0x05b0, 0x14d0, 0x14e0, 0x14f0, 0x1500, 0x1510,
+ 0x1520, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1530, 0x1540, 0x1550,
+ 0x13d0, 0x1560, 0x05b0, 0x05b0, 0x1570, 0x05b0, 0x1580, 0x05b0,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
- 0x1580, 0x1590, 0x05b0, 0x05b0, 0x05b0, 0x1370, 0x05b0, 0x15a0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x15b0, 0x05b0, 0x15c0,
- 0x05b0, 0x15d0, 0x05b0, 0x15e0, 0x0910, 0x15f0, 0x1600, 0x0870,
+ 0x1590, 0x15a0, 0x05b0, 0x05b0, 0x05b0, 0x1370, 0x05b0, 0x15b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x15c0, 0x05b0, 0x15d0,
+ 0x05b0, 0x15e0, 0x05b0, 0x15f0, 0x0900, 0x1600, 0x1610, 0x0860,
0x05b0, 0x05b0, 0x0840, 0x05b0, 0x05b0, 0x0840, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1610, 0x1620,
- 0x05b0, 0x05b0, 0x0d90, 0x05b0, 0x05b0, 0x05b0, 0x1630, 0x1640,
- 0x05b0, 0x13b0, 0x1650, 0x1650, 0x1650, 0x1650, 0x0580, 0x0580,
- 0x1660, 0x1670, 0x1680, 0x1690, 0x16a0, 0x0870, 0x0870, 0x0870,
- 0x16b0, 0x16c0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16d0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16e0, 0x0870, 0x16f0,
- 0x1700, 0x1710, 0x1720, 0x1730, 0x1740, 0x16b0, 0x1750, 0x16b0,
- 0x1760, 0x1770, 0x1780, 0x16b0, 0x1750, 0x16b0, 0x1760, 0x1790,
- 0x17a0, 0x16b0, 0x17b0, 0x17c0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x17b0, 0x16b0, 0x16b0, 0x17d0, 0x16b0, 0x16b0, 0x16d0, 0x17e0,
- 0x16b0, 0x17b0, 0x16b0, 0x16b0, 0x17f0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x17b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
- 0x16b0, 0x1800, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0, 0x16b0,
- 0x1810, 0x16b0, 0x16b0, 0x16b0, 0x1820, 0x05b0, 0x05b0, 0x10c0,
- 0x1830, 0x05b0, 0x1840, 0x0870, 0x05b0, 0x05b0, 0x1610, 0x1850,
- 0x05b0, 0x1860, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1870,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1620, 0x1630,
+ 0x05b0, 0x05b0, 0x0d90, 0x05b0, 0x05b0, 0x05b0, 0x1640, 0x1650,
+ 0x05b0, 0x13b0, 0x1660, 0x1660, 0x1660, 0x1660, 0x0580, 0x0580,
+ 0x1670, 0x1680, 0x1690, 0x16a0, 0x16b0, 0x0860, 0x0860, 0x0860,
+ 0x16c0, 0x16d0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16e0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16f0, 0x0860, 0x1700,
+ 0x1710, 0x1720, 0x1730, 0x1740, 0x1750, 0x16c0, 0x1760, 0x16c0,
+ 0x1770, 0x1780, 0x1790, 0x16c0, 0x1760, 0x16c0, 0x1770, 0x17a0,
+ 0x17b0, 0x16c0, 0x17c0, 0x17d0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x17e0, 0x16c0, 0x16c0, 0x17f0, 0x16c0, 0x16c0, 0x16e0, 0x1800,
+ 0x16c0, 0x17e0, 0x16c0, 0x16c0, 0x1810, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x17e0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
+ 0x16c0, 0x1820, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0, 0x16c0,
+ 0x1830, 0x16c0, 0x16c0, 0x16c0, 0x1840, 0x05b0, 0x05b0, 0x10c0,
+ 0x1850, 0x05b0, 0x1860, 0x0860, 0x05b0, 0x05b0, 0x1620, 0x1870,
+ 0x05b0, 0x1880, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1890,
0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x0840, 0x0a50, 0x0870, 0x0870, 0x0870, 0x1880,
- 0x1890, 0x05b0, 0x18a0, 0x18b0, 0x05b0, 0x05b0, 0x05b0, 0x18c0,
- 0x18d0, 0x05b0, 0x05b0, 0x1020, 0x18e0, 0x0f10, 0x0580, 0x18f0,
- 0x07b0, 0x05b0, 0x1900, 0x05b0, 0x1910, 0x1920, 0x0da0, 0x1930,
- 0x08b0, 0x05b0, 0x05b0, 0x1940, 0x1950, 0x1960, 0x0c20, 0x1970,
- 0x05b0, 0x05b0, 0x1980, 0x1990, 0x19a0, 0x19b0, 0x0c20, 0x0c20,
- 0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x19c0, 0x19d0, 0x0760, 0x19e0,
- 0x19f0, 0x1a00, 0x1650, 0x05b0, 0x05b0, 0x05b0, 0x0f50, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1a10, 0x0f10,
- 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20,
- 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30,
- 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40,
- 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50,
- 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40,
- 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60,
- 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40,
- 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20,
- 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30,
- 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40,
- 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50,
- 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40,
- 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60,
- 0x1a40, 0x1a20, 0x1a30, 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40,
- 0x1a40, 0x1a50, 0x1a40, 0x1a60, 0x1a40, 0x1a20, 0x1a30, 0x1a40,
- 0x1a50, 0x1a40, 0x1a70, 0x0db0, 0x1a80, 0x0dd0, 0x0dd0, 0x1a90,
- 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0,
- 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0,
- 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
- 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
- 0x13b0, 0x1ab0, 0x1ac0, 0x1ad0, 0x1ae0, 0x05b0, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1af0, 0x1b00, 0x05b0, 0x05b0,
- 0x05b0, 0x05b0, 0x05b0, 0x1b10, 0x0870, 0x05b0, 0x05b0, 0x05b0,
- 0x05b0, 0x1b20, 0x05b0, 0x05b0, 0x0a50, 0x0870, 0x0870, 0x1b30,
- 0x0580, 0x1b40, 0x0580, 0x1b50, 0x1b60, 0x1b70, 0x1b80, 0x1130,
- 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1b90,
- 0x1ba0, 0x1bb0, 0x16b0, 0x1bc0, 0x16b0, 0x1bd0, 0x1be0, 0x1bf0,
- 0x16b0, 0x1c00, 0x16b0, 0x17b0, 0x1c10, 0x1c20, 0x1c30, 0x1c40,
+ 0x05b0, 0x05b0, 0x0840, 0x0a40, 0x0860, 0x0860, 0x0860, 0x18a0,
+ 0x18b0, 0x05b0, 0x18c0, 0x18d0, 0x05b0, 0x05b0, 0x05b0, 0x18e0,
+ 0x18f0, 0x05b0, 0x05b0, 0x1020, 0x1900, 0x0f10, 0x0580, 0x1910,
+ 0x07b0, 0x05b0, 0x1920, 0x05b0, 0x1930, 0x1940, 0x0da0, 0x1950,
+ 0x08a0, 0x05b0, 0x05b0, 0x1960, 0x1970, 0x1980, 0x0c20, 0x1990,
+ 0x05b0, 0x05b0, 0x19a0, 0x19b0, 0x19c0, 0x19d0, 0x0c20, 0x0c20,
+ 0x0c20, 0x0c20, 0x0c20, 0x0c20, 0x19e0, 0x19f0, 0x0760, 0x1a00,
+ 0x1a10, 0x1a20, 0x1660, 0x05b0, 0x05b0, 0x05b0, 0x0f50, 0x05b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1a30, 0x0f10,
+ 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40,
+ 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50,
+ 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60,
+ 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70,
+ 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60,
+ 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80,
+ 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60,
+ 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40,
+ 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50,
+ 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60,
+ 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70,
+ 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60,
+ 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80,
+ 0x1a60, 0x1a40, 0x1a50, 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60,
+ 0x1a60, 0x1a70, 0x1a60, 0x1a80, 0x1a60, 0x1a40, 0x1a50, 0x1a60,
+ 0x1a70, 0x1a60, 0x1a90, 0x0db0, 0x1aa0, 0x0dd0, 0x0dd0, 0x1ab0,
+ 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0,
+ 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0,
+ 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860,
+ 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860, 0x0860,
+ 0x13b0, 0x1ad0, 0x1ae0, 0x1af0, 0x1b00, 0x05b0, 0x05b0, 0x05b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1600, 0x1b10, 0x05b0, 0x05b0,
+ 0x05b0, 0x05b0, 0x05b0, 0x1b20, 0x0860, 0x05b0, 0x05b0, 0x05b0,
+ 0x05b0, 0x1b30, 0x05b0, 0x05b0, 0x0a40, 0x0860, 0x0860, 0x1b40,
+ 0x0580, 0x1b50, 0x0580, 0x1b60, 0x1b70, 0x1b80, 0x1b90, 0x1130,
+ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1ba0,
+ 0x1bb0, 0x1bc0, 0x16c0, 0x1bd0, 0x16c0, 0x1be0, 0x1bf0, 0x1c00,
+ 0x16c0, 0x1c10, 0x16c0, 0x17e0, 0x1c20, 0x1c30, 0x1c40, 0x1c50,
/* values */
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x0004, 0x0022, 0x0003, 0x0001, 0x0001, 0x0002, 0x0004, 0x0004,
@@ -277,8 +277,6 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x001d, 0x0011,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d,
@@ -310,7 +308,7 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x0004, 0x0004, 0x0011, 0x0011, 0x001c, 0x001c,
0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
0x001d, 0x001d, 0x001b, 0x001b, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001b, 0x001d, 0x001a, 0x001d, 0x001d, 0x0011, 0x0011,
+ 0x001d, 0x001b, 0x001d, 0x001a, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d,
0x001d, 0x0011, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d, 0x0011,
@@ -332,7 +330,7 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x001d, 0x001a, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x001d, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
+ 0x0011, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d,
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x0004,
@@ -375,8 +373,10 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x0011,
0x0011, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x0004, 0x0004, 0x001d, 0x0004, 0x0004,
+ 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d, 0x0004, 0x0004,
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0004, 0x0004,
0x0004, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d,
0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x0004,
@@ -551,10 +551,10 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x0004, 0x001d, 0x001d, 0x001d, 0x001d, 0x0004, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d, 0x0004,
+ 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d, 0x0011,
0x0004, 0x0004, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
- 0x0004, 0x0004, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
+ 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x0011, 0x001d, 0x0011, 0x001d, 0x0011, 0x001d, 0x0011, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
@@ -638,9 +638,11 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x0012, 0x0013, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001e, 0x001e, 0x001e, 0x001e, 0x001d, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
@@ -711,7 +713,7 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d,
- 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d,
@@ -733,8 +735,8 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0012, 0x0013, 0x0022, 0x0022, 0x0022, 0x0022, 0x0017, 0x001d,
0x0022, 0x0022, 0x001d, 0x0022, 0x0022, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x0025, 0x0025, 0x0022, 0x0022, 0x0022, 0x001d,
- 0x0022, 0x0022, 0x0012, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
- 0x0022, 0x0022, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0022, 0x0022, 0x0012, 0x0022, 0x0022, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
@@ -768,10 +770,12 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
- 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0011,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0011, 0x0011,
0x0011, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0011,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
0x001e, 0x001e, 0x001e, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
@@ -871,8 +875,6 @@ const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7248] =
0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0011, 0x0026, 0x0011,
0x0026, 0x0026, 0x0011, 0x0026, 0x0026, 0x0011, 0x0026, 0x0026,
0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
- 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
- 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
diff --git a/dlls/usp10/mirror.c b/dlls/usp10/mirror.c
index 23dab536c4..daadfa8054 100644
--- a/dlls/usp10/mirror.c
+++ b/dlls/usp10/mirror.c
@@ -1,5 +1,5 @@
/* Unicode BiDi mirroring */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/BidiMirroring.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/BidiMirroring.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/dlls/usp10/shaping.c b/dlls/usp10/shaping.c
index 82435ff2c3..cf6f3b4a97 100644
--- a/dlls/usp10/shaping.c
+++ b/dlls/usp10/shaping.c
@@ -1,10 +1,10 @@
/* Unicode Arabic shaping */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/ArabicShaping.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/ArabicShaping.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
-const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2912] =
+const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2864] =
{
/* level 1 offsets */
0x0100, 0x0110, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160,
@@ -54,64 +54,64 @@ const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2912] =
0x0410, 0x0420, 0x0430, 0x0440, 0x0450, 0x0460, 0x0470, 0x0480,
0x0490, 0x04a0, 0x04b0, 0x0360, 0x04c0, 0x04d0, 0x04e0, 0x04f0,
0x0340, 0x0340, 0x0500, 0x0510, 0x0520, 0x0530, 0x0540, 0x0550,
- 0x0340, 0x0560, 0x0570, 0x0340, 0x0580, 0x0590, 0x05a0, 0x0340,
- 0x0340, 0x0340, 0x05b0, 0x05c0, 0x0340, 0x05d0, 0x05e0, 0x0360,
- 0x05f0, 0x0340, 0x0340, 0x0600, 0x0610, 0x0620, 0x0630, 0x0340,
- 0x0640, 0x0340, 0x0340, 0x0650, 0x0660, 0x0340, 0x0630, 0x0340,
- 0x0670, 0x0340, 0x0340, 0x0650, 0x0680, 0x0640, 0x0340, 0x0690,
- 0x0670, 0x0340, 0x0340, 0x0650, 0x06a0, 0x0340, 0x0630, 0x06b0,
- 0x0640, 0x0340, 0x0340, 0x06c0, 0x0660, 0x06d0, 0x0630, 0x0340,
- 0x06e0, 0x0340, 0x0340, 0x0340, 0x06f0, 0x0340, 0x0340, 0x0340,
- 0x0510, 0x0340, 0x0340, 0x0700, 0x0710, 0x0720, 0x0630, 0x0340,
- 0x0640, 0x0340, 0x0340, 0x06c0, 0x0730, 0x0340, 0x0630, 0x0340,
- 0x0740, 0x0340, 0x0340, 0x0750, 0x0660, 0x0340, 0x0630, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0760, 0x0770, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0780, 0x0790, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x07a0, 0x07b0, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x07c0, 0x0340, 0x07d0, 0x0340, 0x0340, 0x0340, 0x07e0,
- 0x07f0, 0x0800, 0x0360, 0x0810, 0x06d0, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0820, 0x0830, 0x0340, 0x0840, 0x0510, 0x0850,
- 0x0860, 0x0350, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0820, 0x0340, 0x0340,
+ 0x0340, 0x0560, 0x0570, 0x0340, 0x0580, 0x0590, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x05a0, 0x05b0, 0x0340, 0x05c0, 0x05d0, 0x0360,
+ 0x05e0, 0x0340, 0x0340, 0x05f0, 0x0600, 0x0610, 0x0620, 0x0340,
+ 0x0630, 0x0340, 0x0340, 0x0640, 0x0650, 0x0340, 0x0620, 0x0340,
+ 0x0660, 0x0340, 0x0340, 0x0640, 0x0670, 0x0630, 0x0340, 0x0680,
+ 0x0660, 0x0340, 0x0340, 0x0640, 0x0690, 0x0340, 0x0620, 0x0340,
+ 0x0630, 0x0340, 0x0340, 0x06a0, 0x0650, 0x06b0, 0x0620, 0x0340,
+ 0x06c0, 0x0340, 0x0340, 0x0340, 0x06d0, 0x0340, 0x0340, 0x0340,
+ 0x0510, 0x0340, 0x0340, 0x06e0, 0x06f0, 0x0700, 0x0620, 0x0340,
+ 0x0630, 0x0340, 0x0340, 0x06a0, 0x0710, 0x0340, 0x0620, 0x0340,
+ 0x0630, 0x0340, 0x0340, 0x0340, 0x0650, 0x0340, 0x0620, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0720, 0x0730, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0740, 0x0750, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0760, 0x0770, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0780, 0x0340, 0x0790, 0x0340, 0x0340, 0x0340, 0x07a0,
+ 0x07b0, 0x07c0, 0x0360, 0x07d0, 0x06b0, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x07e0, 0x07f0, 0x0340, 0x0800, 0x0510, 0x0810,
+ 0x0820, 0x0350, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x07e0, 0x0340, 0x0340,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0870, 0x0340, 0x0870, 0x0340, 0x0630, 0x0340, 0x0630,
- 0x0340, 0x0340, 0x0340, 0x0880, 0x0890, 0x08a0, 0x0340, 0x0340,
- 0x08b0, 0x0340, 0x0530, 0x0530, 0x0530, 0x0530, 0x0530, 0x08c0,
- 0x08d0, 0x0530, 0x08e0, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x08f0, 0x0900, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0830, 0x0340, 0x0830, 0x0340, 0x0620, 0x0340, 0x0620,
+ 0x0340, 0x0340, 0x0340, 0x0840, 0x0850, 0x0860, 0x0340, 0x0340,
+ 0x0870, 0x0340, 0x0530, 0x0530, 0x0530, 0x0530, 0x0530, 0x0880,
+ 0x0890, 0x0530, 0x08a0, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x08b0, 0x08c0, 0x0340, 0x0340, 0x0340, 0x0340,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0910, 0x0340, 0x0340, 0x0340, 0x0920, 0x0930, 0x0940,
- 0x0340, 0x0340, 0x0340, 0x0950, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0960, 0x0340, 0x0340, 0x0970, 0x06e0, 0x0340, 0x0980, 0x0960,
- 0x0740, 0x0340, 0x0990, 0x0340, 0x0340, 0x0340, 0x09a0, 0x0740,
- 0x0340, 0x0340, 0x09b0, 0x09c0, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x09d0, 0x09e0, 0x09f0,
+ 0x0340, 0x08d0, 0x0340, 0x0340, 0x0340, 0x08e0, 0x08f0, 0x0900,
+ 0x0340, 0x0340, 0x0340, 0x0910, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0920, 0x0340, 0x0340, 0x0930, 0x06c0, 0x0340, 0x0940, 0x0920,
+ 0x0950, 0x0340, 0x0960, 0x0340, 0x0340, 0x0340, 0x0970, 0x0950,
+ 0x0340, 0x0340, 0x0980, 0x0990, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x09a0, 0x09b0, 0x09c0,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0360, 0x0360, 0x0360, 0x0a00,
- 0x0a10, 0x0340, 0x0a20, 0x0340, 0x0340, 0x0340, 0x0a30, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0360, 0x0360, 0x0360, 0x09d0,
+ 0x09e0, 0x0340, 0x09f0, 0x0340, 0x0340, 0x0340, 0x0a00, 0x0340,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0360, 0x0360, 0x0510,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490, 0x0740,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490, 0x0950,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0360, 0x0360,
- 0x0340, 0x0340, 0x0a40, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0a50, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490, 0x0a60,
- 0x0340, 0x0700, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0740,
- 0x0a70, 0x0340, 0x0720, 0x0340, 0x0530, 0x0530, 0x0530, 0x0a80,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0a90, 0x0340, 0x0360, 0x0740,
- 0x0340, 0x0340, 0x0aa0, 0x0340, 0x0ab0, 0x0740, 0x0340, 0x0340,
- 0x05f0, 0x0340, 0x0340, 0x0ac0, 0x0340, 0x0340, 0x0ad0, 0x0340,
- 0x0340, 0x0340, 0x0ae0, 0x0af0, 0x0b00, 0x0340, 0x0340, 0x0650,
- 0x0340, 0x0340, 0x0340, 0x0b10, 0x0640, 0x0340, 0x0b20, 0x06d0,
+ 0x0340, 0x0340, 0x0a10, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0a20, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490, 0x0a30,
+ 0x0340, 0x06e0, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0950,
+ 0x0a40, 0x0340, 0x0700, 0x0340, 0x0530, 0x0530, 0x0530, 0x0a50,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0a60, 0x0340, 0x0360, 0x0950,
+ 0x0340, 0x0340, 0x0a70, 0x0340, 0x0a80, 0x0950, 0x0340, 0x0340,
+ 0x05e0, 0x0340, 0x0340, 0x0a90, 0x0340, 0x0340, 0x0aa0, 0x0340,
+ 0x0340, 0x0340, 0x0ab0, 0x0ac0, 0x0ad0, 0x0340, 0x0340, 0x0640,
+ 0x0340, 0x0340, 0x0340, 0x0ae0, 0x0630, 0x0340, 0x0af0, 0x06b0,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0b30, 0x0340,
- 0x0340, 0x0b40, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0b00, 0x0340,
+ 0x0340, 0x0b10, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
0x0360, 0x0340, 0x0360, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490,
0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0b50,
+ 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0b20,
/* values */
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -189,12 +189,10 @@ const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2912] =
0x0004, 0x0002, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
0x0004, 0x0004, 0x0004, 0x0004, 0x0002, 0x0004, 0x0000, 0x0000,
0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3404, 0x3400, 0x3404, 0x3404, 0x3404, 0x3404, 0x3400, 0x3402,
- 0x3404, 0x3402, 0x3402, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0404, 0x0404, 0x0604, 0x0b04, 0x0f04, 0x1004, 0x1204, 0x1304,
- 0x0104, 0x0104, 0x0802, 0x0302, 0x3502, 0x0000, 0x0702, 0x0a04,
- 0x0d04, 0x3602, 0x0802, 0x0c04, 0x1104, 0x0000, 0x0404, 0x0404,
- 0x0404, 0x0802, 0x0104, 0x3704, 0x3704, 0x3704, 0x0000, 0x0000,
+ 0x0104, 0x0104, 0x0802, 0x0302, 0x3402, 0x0000, 0x0702, 0x0a04,
+ 0x0d04, 0x3502, 0x0802, 0x0c04, 0x1104, 0x0000, 0x0404, 0x0404,
+ 0x0404, 0x0802, 0x0104, 0x3604, 0x3604, 0x3604, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
@@ -224,8 +222,6 @@ const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2912] =
0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001,
0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0001,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -241,10 +237,6 @@ const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2912] =
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0000,
- 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000,
@@ -315,6 +307,8 @@ const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2912] =
0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,
0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000,
@@ -329,8 +323,8 @@ const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2912] =
0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000,
0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
- 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0005, 0x0001, 0x0001,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
diff --git a/dlls/wineps.drv/vertical.c b/dlls/wineps.drv/vertical.c
index 05737604b8..ca4467911c 100644
--- a/dlls/wineps.drv/vertical.c
+++ b/dlls/wineps.drv/vertical.c
@@ -1,5 +1,5 @@
/* Unicode Vertical Orientation */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/VerticalOrientation.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/VerticalOrientation.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/libs/port/compose.c b/libs/port/compose.c
index 71589f47c1..06f6062d24 100644
--- a/libs/port/compose.c
+++ b/libs/port/compose.c
@@ -1,5 +1,5 @@
/* Unicode char composition */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/UnicodeData.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/UnicodeData.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/libs/port/decompose.c b/libs/port/decompose.c
index 221d2e0e92..5e6b2214ec 100644
--- a/libs/port/decompose.c
+++ b/libs/port/decompose.c
@@ -1,5 +1,5 @@
/* Unicode char composition */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/UnicodeData.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/UnicodeData.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/libs/port/digitmap.c b/libs/port/digitmap.c
index 786879a90a..79a86651cc 100644
--- a/libs/port/digitmap.c
+++ b/libs/port/digitmap.c
@@ -1,5 +1,5 @@
/* Unicode digit folding mappings */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/UnicodeData.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/UnicodeData.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/libs/wine/casemap.c b/libs/wine/casemap.c
index bfab3233ee..122f81ff2f 100644
--- a/libs/wine/casemap.c
+++ b/libs/wine/casemap.c
@@ -1,5 +1,5 @@
/* Unicode case mappings */
-/* generated from http://www.unicode.org/Public/10.0.0/ucd/UnicodeData.txt */
+/* generated from http://www.unicode.org/Public/11.0.0/ucd/UnicodeData.txt */
/* DO NOT EDIT!! */
#include "wine/unicode.h"
diff --git a/libs/wine/wctype.c b/libs/wine/wctype.c
index 8d0a3ed94d..5a79353985 100644
--- a/libs/wine/wctype.c
+++ b/libs/wine/wctype.c
@@ -307,8 +307,8 @@ const unsigned short wine_wctype_table[17152] =
0x2300, 0x2300, 0x2300, 0x2300, 0x2300, 0x2300, 0x2300, 0x2300,
0x2300, 0x2300, 0x2300, 0x2300, 0x2300, 0x2300, 0x2300, 0x2300,
0x2300, 0xd200, 0xd200, 0xd200, 0x0000, 0x0000, 0x2210, 0x0000,
- 0xc300, 0xc300, 0xc300, 0xc300, 0xc300, 0xc300, 0xc300, 0xc300,
- 0xc300, 0xc300, 0xc300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -358,7 +358,7 @@ const unsigned short wine_wctype_table[17152] =
0x1300, 0x1300, 0xd200, 0xd200, 0x0000, 0x0000, 0x1204, 0x1204,
0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204,
0x1300, 0x1300, 0x5200, 0x5200, 0x1200, 0x1200, 0x1200, 0x1200,
- 0x1200, 0x1200, 0x1200, 0x5200, 0x1300, 0x1210, 0x0000, 0x0000,
+ 0x1200, 0x1200, 0x1200, 0x5200, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0xd200, 0xd200, 0x1200, 0x0000, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x1300,
0x1300, 0x0000, 0x0000, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
@@ -390,7 +390,7 @@ const unsigned short wine_wctype_table[17152] =
0x1300, 0x1300, 0xd200, 0xd200, 0x0000, 0x0000, 0x1204, 0x1204,
0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204,
0x1210, 0x5200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x1300, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
+ 0x0000, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0xd200, 0x1200, 0x1200, 0x0000, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x0000, 0x0000, 0x1300,
0x1300, 0x0000, 0x0000, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
@@ -455,14 +455,14 @@ const unsigned short wine_wctype_table[17152] =
0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204, 0x1204,
0x0000, 0x1300, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0xd200, 0xd200, 0x1200, 0x1200, 0x0000, 0x1300, 0x1300, 0x1300,
+ 0x0000, 0xd200, 0x1200, 0x1200, 0x0000, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x0000, 0x1300, 0x1300,
0x1300, 0x0000, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
- 0x1300, 0x1300, 0x1300, 0xd200, 0xd200, 0x1300, 0x1200, 0x1200,
+ 0x1300, 0x1300, 0x1300, 0x0000, 0x0000, 0x1300, 0x1200, 0x1200,
0x1200, 0xd200, 0xd200, 0xd200, 0xd200, 0x0000, 0x1200, 0x1200,
0x1200, 0x0000, 0x1200, 0x1200, 0x1200, 0xd200, 0x1300, 0x1200,
0x0000, 0x0000, 0x0000, 0x0000, 0x1300, 0x1300, 0x1300, 0x1200,
@@ -933,7 +933,7 @@ const unsigned short wine_wctype_table[17152] =
0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
0xd200, 0x1200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
0xd200, 0x1300, 0x1300, 0x1300, 0x1300, 0xd200, 0x1300, 0x1300,
- 0x1300, 0x1300, 0x1200, 0x1200, 0xd200, 0x1300, 0x1300, 0x1200,
+ 0x1300, 0x1300, 0x1200, 0x1200, 0xd200, 0x1300, 0x1300, 0x0000,
0xd200, 0xd200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x1302, 0x1302, 0x1302, 0x1302, 0x1302, 0x1302, 0x1302, 0x1302,
0x1302, 0x1302, 0x1302, 0x1302, 0x1302, 0x1302, 0x1302, 0x1302,
@@ -965,8 +965,8 @@ const unsigned short wine_wctype_table[17152] =
0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
- 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
- 0xd200, 0xd200, 0x0000, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
+ 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
0x1301, 0x1302, 0x1301, 0x1302, 0x1301, 0x1302, 0x1301, 0x1302,
0x1301, 0x1302, 0x1301, 0x1302, 0x1301, 0x1302, 0x1301, 0x1302,
0x1301, 0x1302, 0x1301, 0x1302, 0x1301, 0x1302, 0x1301, 0x1302,
@@ -1054,7 +1054,7 @@ const unsigned short wine_wctype_table[17152] =
0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200,
0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200,
0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200,
- 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200,
+ 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x5200, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200, 0xd200,
@@ -1158,7 +1158,7 @@ const unsigned short wine_wctype_table[17152] =
0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
- 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
+ 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0x0000,
0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
@@ -1377,7 +1377,7 @@ const unsigned short wine_wctype_table[17152] =
0xb200, 0xb200, 0x0000, 0x0000, 0x0000, 0xb200, 0xb200, 0xb200,
0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
0xb200, 0x0000, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200, 0xb200,
- 0xb200, 0xb200, 0xb200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xb200, 0xb200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xb200, 0xb200, 0xb200, 0xb200,
@@ -1455,8 +1455,8 @@ const unsigned short wine_wctype_table[17152] =
0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb300,
0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210,
0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210,
- 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0xb210,
- 0xb210, 0xb210, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xb210, 0xb210, 0xb210, 0xb210, 0xb210, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -1548,7 +1548,7 @@ const unsigned short wine_wctype_table[17152] =
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
- 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x0000,
+ 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x0000, 0x0000,
0x0000, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
@@ -1697,10 +1697,10 @@ const unsigned short wine_wctype_table[17152] =
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
- 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
- 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
- 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
- 0x1300, 0x1300, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300, 0x1300,
diff --git a/tools/make_unicode b/tools/make_unicode
index 92b0b64a94..a22cd044b7 100755
--- a/tools/make_unicode
+++ b/tools/make_unicode
@@ -23,7 +23,7 @@ use strict;
# base URLs for www.unicode.org files
my $MAPPINGS = "http://www.unicode.org/Public/MAPPINGS";
-my $UNIDATA = "http://www.unicode.org/Public/10.0.0/ucd";
+my $UNIDATA = "http://www.unicode.org/Public/11.0.0/ucd";
my $REPORTS = "http://www.unicode.org/reports";
my $RFCS = "http://www.rfc-editor.org/rfc";
@@ -1462,7 +1462,12 @@ my %scripts =
"Old_Hungarian" => 134,
"Osage" => 135,
"SignWriting" => 136,
- "Tangut" => 137
+ "Tangut" => 137,
+ # Win10 RS4
+ "Masaram_Gondi" => 138,
+ "Nushu" => 139,
+ "Soyombo" => 140,
+ "Zanabazar_Square" => 141
);
################################################################
--
2.18.0
2
1
June 29, 2018
From: Michael Müller <michael(a)fds-team.de>
Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com>
---
Patch from Wine Staging.
Fixes https://bugs.winehq.org/show_bug.cgi?id=45394
dlls/msvcr120/msvcr120.spec | 2 +-
dlls/msvcr120_app/msvcr120_app.spec | 2 +-
dlls/msvcrt/misc.c | 8 ++++++++
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec
index 00f622b944..585353ccc8 100644
--- a/dlls/msvcr120/msvcr120.spec
+++ b/dlls/msvcr120/msvcr120.spec
@@ -844,7 +844,7 @@
@ stub -arch=i386 _NLG_Return
@ stub -arch=i386 _NLG_Return2
@ stub -arch=arm,win64 __NLG_Return2
-@ stub _SetWinRTOutOfMemoryExceptionCallback
+@ cdecl -arch=i386,x86_64,arm _SetWinRTOutOfMemoryExceptionCallback(ptr) MSVCR120__SetWinRTOutOfMemoryExceptionCallback
@ stub -arch=win64 _SetImageBase
@ stub -arch=win64 _SetThrowImageBase
@ cdecl _Strftime(ptr long str ptr ptr)
diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec
index af1b12957f..ceb8d10306 100644
--- a/dlls/msvcr120_app/msvcr120_app.spec
+++ b/dlls/msvcr120_app/msvcr120_app.spec
@@ -838,7 +838,7 @@
@ stub -arch=i386 _NLG_Return
@ stub -arch=i386 _NLG_Return2
@ stub -arch=arm,win64 __NLG_Return2
-@ stub _SetWinRTOutOfMemoryExceptionCallback
+@ cdecl -arch=i386,x86_64,arm _SetWinRTOutOfMemoryExceptionCallback(ptr) msvcr120._SetWinRTOutOfMemoryExceptionCallback
@ stub -arch=win64 _SetImageBase
@ stub -arch=win64 _SetThrowImageBase
@ cdecl _Strftime(ptr long str ptr ptr) msvcr120._Strftime
diff --git a/dlls/msvcrt/misc.c b/dlls/msvcrt/misc.c
index d760e171bd..5a4e77b098 100644
--- a/dlls/msvcrt/misc.c
+++ b/dlls/msvcrt/misc.c
@@ -580,4 +580,12 @@ void CDECL MSVCRT__crtSleep(DWORD timeout)
TRACE("(%u)\n", timeout);
Sleep(timeout);
}
+
+/*********************************************************************
+ * _SetWinRTOutOfMemoryExceptionCallback (MSVCR120.@)
+ */
+void CDECL MSVCR120__SetWinRTOutOfMemoryExceptionCallback(void *callback)
+{
+ FIXME("(%p): stub\n", callback);
+}
#endif
--
2.18.0
1
0
June 28, 2018
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
dlls/user32/tests/class.c | 16 ++++++-------
dlls/user32/tests/clipboard.c | 4 ++--
dlls/user32/tests/combo.c | 4 ++--
dlls/user32/tests/cursoricon.c | 2 +-
dlls/user32/tests/dde.c | 12 +++++-----
dlls/user32/tests/dialog.c | 8 +++----
dlls/user32/tests/edit.c | 6 ++---
dlls/user32/tests/input.c | 13 +++++------
dlls/user32/tests/listbox.c | 2 +-
dlls/user32/tests/menu.c | 19 ++++++++-------
dlls/user32/tests/monitor.c | 6 ++---
dlls/user32/tests/msg.c | 26 ++++++++++-----------
dlls/user32/tests/resource.c | 4 ++--
dlls/user32/tests/scroll.c | 2 +-
dlls/user32/tests/sysparams.c | 50 ++++++++++++++++++++--------------------
dlls/user32/tests/text.c | 8 +++----
dlls/user32/tests/uitools.c | 2 +-
dlls/user32/tests/win.c | 52 +++++++++++++++++++++---------------------
dlls/user32/tests/wsprintf.c | 8 +++----
19 files changed, 121 insertions(+), 123 deletions(-)
diff --git a/dlls/user32/tests/class.c b/dlls/user32/tests/class.c
index 9b3b2b30f3..53fa2f12e3 100644
--- a/dlls/user32/tests/class.c
+++ b/dlls/user32/tests/class.c
@@ -169,7 +169,7 @@ static void ClassTest(HINSTANCE hInstance, BOOL global)
}
/* check GetClassName */
- i = GetClassNameW(hTestWnd, str, sizeof(str)/sizeof(str[0]));
+ i = GetClassNameW(hTestWnd, str, ARRAY_SIZE(str));
ok(i == lstrlenW(className),
"GetClassName returned incorrect length\n");
ok(!lstrcmpW(className,str),
@@ -725,7 +725,7 @@ static void test_builtinproc(void)
ok(IsWindowUnicode(hwnd) ||
broken(!IsWindowUnicode(hwnd)) /* Windows 8 and 10 */,
"Windows should be Unicode\n");
- SendMessageW(hwnd, WM_GETTEXT, sizeof(buf) / sizeof(buf[0]), (LPARAM)buf);
+ SendMessageW(hwnd, WM_GETTEXT, ARRAY_SIZE(buf), (LPARAM)buf);
if (IsWindowUnicode(hwnd))
ok(memcmp(buf, unistring, sizeof(unistring)) == 0, "WM_GETTEXT invalid return\n");
else
@@ -939,7 +939,7 @@ static const struct
static void test_extra_values(void)
{
int i;
- for(i=0; i< sizeof(extra_values)/sizeof(extra_values[0]); i++)
+ for(i = 0; i < ARRAY_SIZE(extra_values); i++)
{
WNDCLASSEXA wcx;
BOOL ret = GetClassInfoExA(NULL,extra_values[i].name,&wcx);
@@ -1133,7 +1133,7 @@ static void test_comctl32_class( const char *name )
name++;
- GetTempPathA(sizeof(path)/sizeof(path[0]), path);
+ GetTempPathA(ARRAY_SIZE(path), path);
strcat(path, "comctl32_class.manifest");
create_manifest_file(path, comctl32_manifest);
@@ -1161,7 +1161,7 @@ static void test_comctl32_class( const char *name )
if (!ret)
goto skiptest;
- MultiByteToWideChar( CP_ACP, 0, name, -1, nameW, sizeof(nameW)/sizeof(WCHAR) );
+ MultiByteToWideChar( CP_ACP, 0, name, -1, nameW, ARRAY_SIZE(nameW));
ret = GetClassInfoW( 0, nameW, &wcW );
ok( ret, "GetClassInfoW failed for %s\n", name );
module = GetModuleHandleA( "comctl32" );
@@ -1187,7 +1187,7 @@ static void test_comctl32_class( const char *name )
ret = GetClassInfoA( 0, name, &wcA );
ok( ret || broken(!ret) /* <= winxp */, "GetClassInfoA failed for %s\n", name );
if (!ret) return;
- MultiByteToWideChar( CP_ACP, 0, name, -1, nameW, sizeof(nameW)/sizeof(WCHAR) );
+ MultiByteToWideChar( CP_ACP, 0, name, -1, nameW, ARRAY_SIZE(nameW));
ret = GetClassInfoW( 0, nameW, &wcW );
ok( ret, "GetClassInfoW failed for %s\n", name );
module = GetModuleHandleA( "comctl32" );
@@ -1243,7 +1243,7 @@ static void test_comctl32_classes(void)
};
winetest_get_mainargs( &argv );
- for (i = 0; i < sizeof(classes) / sizeof(classes[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(classes); i++)
{
memset( &startup, 0, sizeof(startup) );
startup.cb = sizeof( startup );
@@ -1322,7 +1322,7 @@ static void test_actctx_classes(void)
HWND hwnd;
char path[MAX_PATH];
- GetTempPathA(sizeof(path)/sizeof(path[0]), path);
+ GetTempPathA(ARRAY_SIZE(path), path);
strcat(path, "actctx_classes.manifest");
create_manifest_file(path, main_manifest);
diff --git a/dlls/user32/tests/clipboard.c b/dlls/user32/tests/clipboard.c
index 3d3ef8b4c1..4436ece70d 100644
--- a/dlls/user32/tests/clipboard.c
+++ b/dlls/user32/tests/clipboard.c
@@ -711,7 +711,7 @@ static void test_synthesized(void)
r = CloseClipboard();
ok(r, "gle %d\n", GetLastError());
- for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(tests); i++)
{
r = OpenClipboard(NULL);
ok(r, "%u: gle %d\n", i, GetLastError());
@@ -2044,7 +2044,7 @@ static void test_string_data(void)
char bufferA[12];
WCHAR bufferW[12];
- for (i = 0; i < sizeof(test_data) / sizeof(test_data[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(test_data); i++)
{
/* 1-byte Unicode strings crash on Win64 */
#ifdef _WIN64
diff --git a/dlls/user32/tests/combo.c b/dlls/user32/tests/combo.c
index ad706ea754..3358e846a0 100644
--- a/dlls/user32/tests/combo.c
+++ b/dlls/user32/tests/combo.c
@@ -291,7 +291,7 @@ static void test_WM_LBUTTONDOWN(void)
hCombo = CreateWindowA("ComboBox", "Combo", WS_VISIBLE|WS_CHILD|CBS_DROPDOWN,
0, 0, 200, 150, hMainWnd, (HMENU)COMBO_ID, NULL, 0);
- for (i = 0; i < sizeof(choices)/sizeof(UINT); i++){
+ for (i = 0; i < ARRAY_SIZE(choices); i++){
sprintf(buffer, stringFormat, choices[i]);
result = SendMessageA(hCombo, CB_ADDSTRING, 0, (LPARAM)buffer);
ok(result == i,
@@ -709,7 +709,7 @@ static void test_listbox_size(DWORD style)
{10, 100, TRUE},
};
- for(test = 0; test < sizeof(info_height) / sizeof(info_height[0]); test++)
+ for(test = 0; test < ARRAY_SIZE(info_height); test++)
{
const struct list_size_info *info_test = &info_height[test];
int height_item; /* Height of a list item */
diff --git a/dlls/user32/tests/cursoricon.c b/dlls/user32/tests/cursoricon.c
index 3d56815848..8404ee71ab 100644
--- a/dlls/user32/tests/cursoricon.c
+++ b/dlls/user32/tests/cursoricon.c
@@ -2533,7 +2533,7 @@ static void test_PrivateExtractIcons(void)
static const test_icon_entries_t icon_desc[] = {{0,0,TRUE}, {16,16,TRUE}, {32,32}, {64,64,TRUE}};
- create_ico_file("extract.ico", icon_desc, sizeof(icon_desc)/sizeof(*icon_desc));
+ create_ico_file("extract.ico", icon_desc, ARRAY_SIZE(icon_desc));
ret = PrivateExtractIconsA("extract.ico", 0, 32, 32, &icon, NULL, 1, 0);
ok(ret == 1, "PrivateExtractIconsA returned %u\n", ret);
diff --git a/dlls/user32/tests/dde.c b/dlls/user32/tests/dde.c
index d63a0f65aa..eed2ac437e 100644
--- a/dlls/user32/tests/dde.c
+++ b/dlls/user32/tests/dde.c
@@ -2396,7 +2396,7 @@ static WCHAR test_cmd_w_to_w[][32] = {
{ 0x4efa, 0x4efc, 0x0061, 0x4efe, 0 }, /* some Chinese chars */
{ 0x0061, 0x0062, 0x0063, 0x9152, 0 }, /* Chinese with latin characters begin */
};
-static const int nb_callbacks = 5 + sizeof(test_cmd_w_to_w)/sizeof(test_cmd_w_to_w[0]);
+static const int nb_callbacks = 5 + ARRAY_SIZE(test_cmd_w_to_w);
static HDDEDATA CALLBACK server_end_to_end_callback(UINT uType, UINT uFmt, HCONV hconv,
HSZ hsz1, HSZ hsz2, HDDEDATA hdata,
@@ -2480,7 +2480,7 @@ static HDDEDATA CALLBACK server_end_to_end_callback(UINT uType, UINT uFmt, HCONV
size_a = strlen(test_cmd_a_to_a) + 1;
size_w = (lstrlenW(cmd_w) + 1) * sizeof(WCHAR);
size_a_to_w = MultiByteToWideChar( CP_ACP, 0, test_cmd_a_to_a, -1, test_cmd_a_to_w,
- sizeof(test_cmd_a_to_w)/sizeof(WCHAR) ) * sizeof(WCHAR);
+ ARRAY_SIZE(test_cmd_a_to_w)) * sizeof(WCHAR);
size_w_to_a = WideCharToMultiByte( CP_ACP, 0, cmd_w, -1,
test_cmd_w_to_a, sizeof(test_cmd_w_to_a), NULL, NULL );
switch (str_index)
@@ -2528,7 +2528,7 @@ static HDDEDATA CALLBACK server_end_to_end_callback(UINT uType, UINT uFmt, HCONV
/* double A->W mapping */
/* NT uses the full size, XP+ only until the first null */
DWORD nt_size = MultiByteToWideChar( CP_ACP, 0, (char *)cmd_w, size_w, test_cmd_a_to_w,
- sizeof(test_cmd_a_to_w)/sizeof(WCHAR) ) * sizeof(WCHAR);
+ ARRAY_SIZE(test_cmd_a_to_w)) * sizeof(WCHAR);
DWORD xp_size = MultiByteToWideChar( CP_ACP, 0, (char *)cmd_w, -1, NULL, 0 ) * sizeof(WCHAR);
ok(size == xp_size || broken(size == nt_size) ||
broken(str_index == 4 && IsDBCSLeadByte(cmd_w[0])) /* East Asian */,
@@ -2554,7 +2554,7 @@ static HDDEDATA CALLBACK server_end_to_end_callback(UINT uType, UINT uFmt, HCONV
{
todo_wine ok(size == size_w, "Wrong size %d expected %d, msg_index=%d\n", size, size_w, msg_index);
MultiByteToWideChar(CP_ACP, 0, test_cmd_w_to_a, size_w, test_cmd_a_to_w,
- sizeof(test_cmd_a_to_w)/sizeof(WCHAR));
+ ARRAY_SIZE(test_cmd_a_to_w));
todo_wine ok(!lstrcmpW((WCHAR*)buffer, cmd_w),
"Expected %s got %s, msg_index=%d\n", wine_dbgstr_w(cmd_w), wine_dbgstr_w((WCHAR *)buffer), msg_index);
}
@@ -2562,7 +2562,7 @@ static HDDEDATA CALLBACK server_end_to_end_callback(UINT uType, UINT uFmt, HCONV
{
todo_wine ok(size == size_w, "Wrong size %d expected %d, msg_index=%d\n", size, size_w, msg_index);
MultiByteToWideChar(CP_ACP, 0, test_cmd_w_to_a, size_w, test_cmd_a_to_w,
- sizeof(test_cmd_a_to_w)/sizeof(WCHAR));
+ ARRAY_SIZE(test_cmd_a_to_w));
if (!is_cjk())
todo_wine ok(!lstrcmpW((WCHAR*)buffer, test_cmd_a_to_w), "Expected %s, got %s, msg_index=%d\n",
wine_dbgstr_w(test_cmd_a_to_w), wine_dbgstr_w((WCHAR*)buffer), msg_index);
@@ -2663,7 +2663,7 @@ static void test_end_to_end_client(BOOL type_a)
err = DdeGetLastError(client_pid);
ok(err == DMLERR_NO_ERROR, "wrong dde error %x\n", err);
- for (i = 0; i < sizeof(test_cmd_w_to_w)/sizeof(test_cmd_w_to_w[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(test_cmd_w_to_w); i++)
{
hdata = DdeClientTransaction((LPBYTE)test_cmd_w_to_w[i],
(lstrlenW(test_cmd_w_to_w[i]) + 1) * sizeof(WCHAR),
diff --git a/dlls/user32/tests/dialog.c b/dlls/user32/tests/dialog.c
index ab3eec88bc..807a85b4ea 100644
--- a/dlls/user32/tests/dialog.c
+++ b/dlls/user32/tests/dialog.c
@@ -161,7 +161,7 @@ static BOOL CreateWindows (HINSTANCE hinst)
*/
if (p->id >= numwnds)
{
- if (p->id >= sizeof(hwnd)/sizeof(hwnd[0]))
+ if (p->id >= ARRAY_SIZE(hwnd))
{
trace ("Control %ld is out of range\n", p->id);
return FALSE;
@@ -1045,7 +1045,7 @@ static void test_GetDlgItemText(void)
BOOL ret;
strcpy(string, "Overwrite Me");
- ret = GetDlgItemTextA(NULL, 0, string, sizeof(string)/sizeof(string[0]));
+ ret = GetDlgItemTextA(NULL, 0, string, ARRAY_SIZE(string));
ok(!ret, "GetDlgItemText(NULL) shouldn't have succeeded\n");
ok(string[0] == '\0' || broken(!strcmp(string, "Overwrite Me")),
@@ -1461,7 +1461,7 @@ static INT_PTR CALLBACK test_aw_conversion_dlgproc(HWND hdlg, UINT msg, WPARAM w
(BYTE)buff[0], (BYTE)buff[1], len);
memset(buffW, 0xff, sizeof(buffW));
- len = GetWindowTextW(hdlg, buffW, sizeof(buffW)/sizeof(buffW[0]));
+ len = GetWindowTextW(hdlg, buffW, ARRAY_SIZE(buffW));
ok(buffW[0] == 'W' && buffW[1] == 0xffff && len == 0, "Unexpected window text %#x, %#x, len %d\n",
buffW[0], buffW[1], len);
@@ -1567,7 +1567,7 @@ static INT_PTR CALLBACK test_aw_conversion_dlgproc2(HWND hdlg, UINT msg, WPARAM
ok(!strcmp(buff, testtext) && len == 0, "Unexpected window text %s, len %d\n", buff, len);
memset(buffW, 0xff, sizeof(buffW));
- len = GetWindowTextW(hdlg, buffW, sizeof(buffW)/sizeof(buffW[0]));
+ len = GetWindowTextW(hdlg, buffW, ARRAY_SIZE(buffW));
ok(buffW[0] == 0 && buffW[1] == 0xffff && len == 0, "Unexpected window text %#x, %#x, len %d\n",
buffW[0], buffW[1], len);
diff --git a/dlls/user32/tests/edit.c b/dlls/user32/tests/edit.c
index 01418bf551..00c05fdef0 100644
--- a/dlls/user32/tests/edit.c
+++ b/dlls/user32/tests/edit.c
@@ -2956,7 +2956,7 @@ static void test_EM_GETLINE(void)
hwnd[0] = create_editcontrol(ES_AUTOHSCROLL | ES_AUTOVSCROLL, 0);
hwnd[1] = create_editcontrolW(ES_AUTOHSCROLL | ES_AUTOVSCROLL, 0);
- for (i = 0; i < sizeof(hwnd)/sizeof(hwnd[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(hwnd); i++)
{
static const WCHAR strW[] = {'t','e','x','t',0};
static const char *str = "text";
@@ -2984,13 +2984,13 @@ static void test_EM_GETLINE(void)
ok(!strcmp(buff, str), "Unexpected line data %s.\n", buff);
memset(buffW, 0, sizeof(buffW));
- *(WORD *)buffW = sizeof(buffW)/sizeof(buffW[0]);
+ *(WORD *)buffW = ARRAY_SIZE(buffW);
r = SendMessageW(hwnd[i], EM_GETLINE, 0, (LPARAM)buffW);
ok(r == lstrlenW(strW), "Failed to get a line %d.\n", r);
ok(!lstrcmpW(buffW, strW), "Unexpected line data %s.\n", wine_dbgstr_w(buffW));
memset(buffW, 0, sizeof(buffW));
- *(WORD *)buffW = sizeof(buffW)/sizeof(buffW[0]);
+ *(WORD *)buffW = ARRAY_SIZE(buffW);
r = SendMessageW(hwnd[i], EM_GETLINE, 1, (LPARAM)buffW);
ok(r == lstrlenW(strW), "Failed to get a line %d.\n", r);
ok(!lstrcmpW(buffW, strW), "Unexpected line data %s.\n", wine_dbgstr_w(buffW));
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c
index 8fa1de23e1..03b84007b1 100644
--- a/dlls/user32/tests/input.c
+++ b/dlls/user32/tests/input.c
@@ -943,8 +943,7 @@ static void test_Input_blackbox(void)
i.u.ki.time = 0;
i.u.ki.dwExtraInfo = 0;
- for (ii = 0; ii < sizeof(sendinput_test)/sizeof(struct sendinput_test_s)-1;
- ii++) {
+ for (ii = 0; ii < ARRAY_SIZE(sendinput_test)-1; ii++) {
GetKeyboardState(ks1);
i.u.ki.wScan = ii+1 /* useful for debugging */;
i.u.ki.dwFlags = sendinput_test[ii].dwFlags;
@@ -1520,12 +1519,12 @@ static void test_GetRawInputDeviceList(void)
ok(ret > 0, "expected non-zero\n");
/* check if variable changes from larger to smaller value */
- devcount = odevcount = sizeof(devices) / sizeof(devices[0]);
+ devcount = odevcount = ARRAY_SIZE(devices);
oret = ret = pGetRawInputDeviceList(devices, &odevcount, sizeof(devices[0]));
ok(ret > 0, "expected non-zero\n");
ok(devcount == odevcount, "expected %d, got %d\n", devcount, odevcount);
devcount = odevcount;
- odevcount = sizeof(devices) / sizeof(devices[0]);
+ odevcount = ARRAY_SIZE(devices);
ret = pGetRawInputDeviceList(NULL, &odevcount, sizeof(devices[0]));
ok(ret == 0, "expected 0, got %d\n", ret);
ok(odevcount == oret, "expected %d, got %d\n", oret, odevcount);
@@ -1567,7 +1566,7 @@ static void test_key_map(void)
"Scan code -> vKey = %x (not VK_RSHIFT)\n", kR);
/* test that MAPVK_VSC_TO_VK prefers the non-numpad vkey if there's ambiguity */
- for (i = 0; i < sizeof(numpad_collisions)/sizeof(numpad_collisions[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(numpad_collisions); i++)
{
UINT numpad_scan = MapVirtualKeyExA(numpad_collisions[i][0], MAPVK_VK_TO_VSC, kl);
UINT other_scan = MapVirtualKeyExA(numpad_collisions[i][1], MAPVK_VK_TO_VSC, kl);
@@ -1665,7 +1664,7 @@ static void test_ToUnicode(void)
"ToUnicode didn't null-terminate the buffer when there was room.\n");
}
- for (i = 0; i < sizeof(utests) / sizeof(utests[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(utests); i++)
{
UINT vk = utests[i].vk, mod = utests[i].modifiers, scan;
@@ -1808,7 +1807,7 @@ static void test_key_names(void)
ok( buffer[0] == 0, "wrong string '%s'\n", buffer );
memset( bufferW, 0xcc, sizeof(bufferW) );
- ret = GetKeyNameTextW( lparam, bufferW, sizeof(bufferW)/sizeof(WCHAR) );
+ ret = GetKeyNameTextW( lparam, bufferW, ARRAY_SIZE(bufferW));
ok( ret > 0, "wrong len %u for %s\n", ret, wine_dbgstr_w(bufferW) );
ok( ret == lstrlenW(bufferW), "wrong len %u for %s\n", ret, wine_dbgstr_w(bufferW) );
diff --git a/dlls/user32/tests/listbox.c b/dlls/user32/tests/listbox.c
index 88d3adb728..c6edc76ea2 100644
--- a/dlls/user32/tests/listbox.c
+++ b/dlls/user32/tests/listbox.c
@@ -51,7 +51,7 @@ static int strcmp_aw(LPCWSTR strw, const char *stra)
WCHAR buf[1024];
if (!stra) return 1;
- MultiByteToWideChar(CP_ACP, 0, stra, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, stra, -1, buf, ARRAY_SIZE(buf));
return lstrcmpW(strw, buf);
}
diff --git a/dlls/user32/tests/menu.c b/dlls/user32/tests/menu.c
index 0f6e8618a6..7f338ce9b1 100644
--- a/dlls/user32/tests/menu.c
+++ b/dlls/user32/tests/menu.c
@@ -668,7 +668,7 @@ static void test_menu_ownerdraw(void)
ok( ret, "AppendMenu failed for %d\n", k-1);
}
MOD_maxid = k-1;
- assert( k <= sizeof(MOD_rc)/sizeof(RECT));
+ assert( k <= ARRAY_SIZE(MOD_rc));
/* display the menu */
TrackPopupMenu( hmenu, TPM_RETURNCMD, 100,100, 0, hwnd, NULL);
@@ -986,14 +986,14 @@ static void test_menu_bmp_and_string(void)
for( ispop=1; ispop >= 0; ispop--){
static SIZE bmsizes[]= {
{10,10},{38,38},{1,30},{55,5}};
- for( szidx=0; szidx < sizeof( bmsizes) / sizeof( SIZE); szidx++) {
+ for( szidx=0; szidx < ARRAY_SIZE(bmsizes); szidx++) {
HBITMAP hbm = CreateBitmap( bmsizes[szidx].cx, bmsizes[szidx].cy,1,1,bmfill);
HBITMAP bitmaps[] = { HBMMENU_CALLBACK, hbm, HBMMENU_POPUP_CLOSE, NULL };
ok( hbm != 0, "CreateBitmap failed err %d\n", GetLastError());
- for( txtidx = 0; txtidx < sizeof(MOD_txtsizes)/sizeof(MOD_txtsizes[0]); txtidx++) {
+ for( txtidx = 0; txtidx < ARRAY_SIZE(MOD_txtsizes); txtidx++) {
for( hassub = 0; hassub < 2 ; hassub++) { /* add submenu item */
for( mnuopt = 0; mnuopt < 3 ; mnuopt++){ /* test MNS_NOCHECK/MNS_CHECKORBMP */
- for( bmpidx = 0; bmpidx <sizeof(bitmaps)/sizeof(HBITMAP); bmpidx++) {
+ for( bmpidx = 0; bmpidx <ARRAY_SIZE(bitmaps); bmpidx++) {
/* no need to test NULL bitmaps of several sizes */
if( !bitmaps[bmpidx] && szidx > 0) continue;
/* the HBMMENU_POPUP not to test for menu bars */
@@ -2757,9 +2757,8 @@ static void test_menu_resource_layout(void)
ok(ret, "AppendMenu failed\n");
count = GetMenuItemCount(hmenu);
- ok(count == sizeof(menu_data)/sizeof(menu_data[0]),
- "expected %u menu items, got %u\n",
- (UINT)(sizeof(menu_data)/sizeof(menu_data[0])), count);
+ ok(count == ARRAY_SIZE(menu_data), "expected %u menu items, got %u\n",
+ (UINT) ARRAY_SIZE(menu_data), count);
for (i = 0; i < count; i++)
{
@@ -2978,9 +2977,9 @@ static void test_InsertMenu(void)
};
HMENU hmenu;
-#define create_menu(a) create_menu_from_data((a), sizeof(a)/sizeof((a)[0]))
-#define create_menuitem(a) create_menuitem_from_data((a), sizeof(a)/sizeof((a)[0]))
-#define compare_menu(h, a) compare_menu_data((h), (a), sizeof(a)/sizeof((a)[0]))
+#define create_menu(a) create_menu_from_data((a), ARRAY_SIZE(a))
+#define create_menuitem(a) create_menuitem_from_data((a), ARRAY_SIZE(a))
+#define compare_menu(h, a) compare_menu_data((h), (a), ARRAY_SIZE(a))
hmenu = create_menu(in1);
compare_menu(hmenu, out1);
diff --git a/dlls/user32/tests/monitor.c b/dlls/user32/tests/monitor.c
index 4d7b020e14..f4c1a4b17c 100644
--- a/dlls/user32/tests/monitor.c
+++ b/dlls/user32/tests/monitor.c
@@ -398,7 +398,7 @@ static void test_monitors(void)
/* tests for cbSize in MONITORINFO */
monitor = pMonitorFromWindow( 0, MONITOR_DEFAULTTOPRIMARY );
- for (i = 0; i < (sizeof(testdatami) / sizeof(testdatami[0])); i++)
+ for (i = 0; i < ARRAY_SIZE(testdatami); i++)
{
memset( &mi, 0, sizeof(mi) );
mi.cbSize = testdatami[i].cbSize;
@@ -420,7 +420,7 @@ static void test_monitors(void)
}
/* tests for cbSize in MONITORINFOEXA */
- for (i = 0; i < (sizeof(testdatamiexa) / sizeof(testdatamiexa[0])); i++)
+ for (i = 0; i < ARRAY_SIZE(testdatamiexa); i++)
{
memset( &miexa, 0, sizeof(miexa) );
miexa.cbSize = testdatamiexa[i].cbSize;
@@ -433,7 +433,7 @@ static void test_monitors(void)
}
/* tests for cbSize in MONITORINFOEXW */
- for (i = 0; i < (sizeof(testdatamiexw) / sizeof(testdatamiexw[0])); i++)
+ for (i = 0; i < ARRAY_SIZE(testdatamiexw); i++)
{
memset( &miexw, 0, sizeof(miexw) );
miexw.cbSize = testdatamiexw[i].cbSize;
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index a0f2cbeef0..1f2c0dd1f7 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -4966,7 +4966,7 @@ static void test_WM_DEVICECHANGE(HWND hwnd)
DBT_DEVICETYPESPECIFIC,
DBT_CUSTOMEVENT};
- for (i = 0; i < sizeof(wparams)/sizeof(wparams[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(wparams); i++)
{
SetLastError(0xdeadbeef);
ret = PostMessageA(hwnd, WM_DEVICECHANGE, wparams[i], 0);
@@ -6273,7 +6273,7 @@ static void test_button_messages(void)
hfont2 = CreateFontIndirectA(&logfont);
ok(hfont2 != NULL, "Failed to create Tahoma font\n");
- for (i = 0; i < sizeof(button)/sizeof(button[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(button); i++)
{
MSG msg;
DWORD style, state;
@@ -6686,7 +6686,7 @@ static void test_static_messages(void)
subclass_static();
- for (i = 0; i < sizeof(static_ctrl)/sizeof(static_ctrl[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(static_ctrl); i++)
{
hwnd = CreateWindowExA(0, "my_static_class", "test", static_ctrl[i].style | WS_POPUP,
0, 0, 50, 14, 0, 0, 0, NULL);
@@ -9729,13 +9729,13 @@ static void test_timers_no_wnd(void)
win_skip("SetCoalescableTimer not available.\n");
/* Check what happens when we're running out of timers */
- for (i=0; i<sizeof(ids)/sizeof(ids[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(ids); i++)
{
SetLastError(0xdeadbeef);
ids[i] = SetTimer(NULL, 0, USER_TIMER_MAXIMUM, tfunc);
if (!ids[i]) break;
}
- ok(i != sizeof(ids)/sizeof(ids[0]), "all timers were created successfully\n");
+ ok(i != ARRAY_SIZE(ids), "all timers were created successfully\n");
ok(GetLastError()==ERROR_NO_MORE_USER_HANDLES || broken(GetLastError()==0xdeadbeef),
"GetLastError() = %d\n", GetLastError());
while (i > 0) KillTimer(NULL, ids[--i]);
@@ -10113,7 +10113,7 @@ static void test_winevents(void)
ok_sequence(WmEmptySeq, "empty notify winevents", FALSE);
}
- for (i = 0; i < sizeof(WmWinEventsSeq)/sizeof(WmWinEventsSeq[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(WmWinEventsSeq); i++)
pNotifyWinEvent(events[i].message, hwnd, events[i].wParam, events[i].lParam);
ok_sequence(WmWinEventsSeq, "notify winevents", FALSE);
@@ -12797,7 +12797,7 @@ static void test_ShowWindow(void)
ok(EqualRect(&win_rc, &wp.rcNormalPosition), "expected %s got %s\n", wine_dbgstr_rect(&win_rc),
wine_dbgstr_rect(&wp.rcNormalPosition));
- for (i = 0; i < sizeof(sw)/sizeof(sw[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(sw); i++)
{
static const char * const sw_cmd_name[13] =
{
@@ -14660,20 +14660,20 @@ static void test_defwinproc(void)
flush_events();
buffA[0] = 0;
- GetWindowTextA(hwnd, buffA, sizeof(buffA)/sizeof(*buffA));
+ GetWindowTextA(hwnd, buffA, ARRAY_SIZE(buffA));
ok(!strcmp(buffA, "test_defwndproc"), "unexpected window text, %s\n", buffA);
/* Zero high word of the lParam */
res = DefWindowProcA(hwnd, WM_SETTEXT, 0, 0x1234);
ok(res == 0, "WM_SETTEXT was expected to fail, %ld\n", res);
- GetWindowTextA(hwnd, buffA, sizeof(buffA)/sizeof(*buffA));
+ GetWindowTextA(hwnd, buffA, ARRAY_SIZE(buffA));
ok(!strcmp(buffA, "test_defwndproc"), "unexpected window text, %s\n", buffA);
res = DefWindowProcW(hwnd, WM_SETTEXT, 0, 0x1234);
ok(res == 0, "WM_SETTEXT was expected to fail, %ld\n", res);
- GetWindowTextA(hwnd, buffA, sizeof(buffA)/sizeof(*buffA));
+ GetWindowTextA(hwnd, buffA, ARRAY_SIZE(buffA));
ok(!strcmp(buffA, "test_defwndproc"), "unexpected window text, %s\n", buffA);
GetCursorPos(&pos);
@@ -14933,7 +14933,7 @@ static void test_PostMessage(void)
PostMessageA(hwnd, WM_USER+1, 0x1234, 0x5678);
PostMessageA(0, WM_USER+2, 0x5678, 0x1234);
- for (i = 0; i < sizeof(data)/sizeof(data[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(data); i++)
{
memset(&msg, 0xab, sizeof(msg));
ret = PeekMessageA(&msg, data[i].hwnd, 0, 0, PM_NOREMOVE);
@@ -14991,7 +14991,7 @@ static void test_broadcast(void)
oldproc = (WNDPROC)SetWindowLongPtrA(hwnd, GWLP_WNDPROC, (LONG_PTR)broadcast_test_proc);
SetWindowLongPtrA(hwnd, GWLP_USERDATA, (LONG_PTR)oldproc);
- for (i = 0; i < sizeof(messages)/sizeof(messages[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(messages); i++)
{
BOOL ret;
MSG msg;
@@ -15321,7 +15321,7 @@ static void test_WaitForInputIdle( char *argv0 )
thread = CreateThread( NULL, 0, wait_idle_thread, NULL, 0, &id );
- for (i = 0; i < sizeof(wait_idle_expect)/sizeof(wait_idle_expect[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(wait_idle_expect); i++)
{
ResetEvent( start_event );
ResetEvent( end_event );
diff --git a/dlls/user32/tests/resource.c b/dlls/user32/tests/resource.c
index 2388adb64f..5d4c4e2f96 100644
--- a/dlls/user32/tests/resource.c
+++ b/dlls/user32/tests/resource.c
@@ -50,7 +50,7 @@ static void test_LoadStringW(void)
win_skip( "LoadStringW does not return a pointer to the resource\n" );
return;
}
- length2 = LoadStringW(hInst, 2, returnedstringw, sizeof(returnedstringw) /sizeof(WCHAR)); /* get resource string */
+ length2 = LoadStringW(hInst, 2, returnedstringw, ARRAY_SIZE(returnedstringw)); /* get resource string */
ok(length2 > 0, "LoadStringW failed to load resource 2, ret %d, err %d\n", length2, GetLastError());
ok(length1 == length2, "LoadStringW returned different values dependent on buflen. ret1 %d, ret2 %d\n",
length1, length2);
@@ -93,7 +93,7 @@ static void test_LoadStringA (void)
int ret, ret2;
assert (sizeof str < sizeof buf);
- for (i = 0; i < sizeof tests / sizeof tests[0]; i++) {
+ for (i = 0; i < ARRAY_SIZE(tests); i++) {
const unsigned int bufsiz = tests[i].bufsiz;
const unsigned int expected = tests[i].expected;
const int len = LoadStringA (hInst, 0, buf, bufsiz);
diff --git a/dlls/user32/tests/scroll.c b/dlls/user32/tests/scroll.c
index 0bda5dd0f4..291d11af0f 100644
--- a/dlls/user32/tests/scroll.c
+++ b/dlls/user32/tests/scroll.c
@@ -514,7 +514,7 @@ static void scrollbar_test_init(void)
wc.lpfnWndProc = scroll_init_proc;
RegisterClassExA(&wc);
- for(i = 0; i < sizeof style / sizeof style[0]; i++)
+ for(i = 0; i < ARRAY_SIZE(style); i++)
{
/* need not to destroy these windows due creation abort */
CreateWindowExA(0, cls_name, NULL, style[i],
diff --git a/dlls/user32/tests/sysparams.c b/dlls/user32/tests/sysparams.c
index ce056e9160..3db058f950 100644
--- a/dlls/user32/tests/sysparams.c
+++ b/dlls/user32/tests/sysparams.c
@@ -710,7 +710,7 @@ static void test_SPI_SETMOUSE( void ) /* 4 */
POINT proj_change7[] = { {6, 6}, {14, 6}, {32, 6}, {40, 40}, {44, 40}, {400, 400} };
POINT proj_change8[] = { {6, 6}, {28, 6}, {32, 6}, {40, 40}, {44, 40}, {400, 400} };
- int nchange = sizeof( req_change ) / sizeof( POINT );
+ int nchange = ARRAY_SIZE(req_change);
trace("testing SPI_{GET,SET}MOUSE\n");
SetLastError(0xdeadbeef);
@@ -875,7 +875,7 @@ static void test_SPI_SETKEYBOARDSPEED( void ) /* 10 */
if (!test_error_msg(rc,"SPI_{GET,SET}KEYBOARDSPEED"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
char buf[10];
@@ -964,7 +964,7 @@ static void test_SPI_SETSCREENSAVETIMEOUT( void ) /* 14 */
if (!test_error_msg(rc,"SPI_{GET,SET}SCREENSAVETIMEOUT"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
char buf[10];
@@ -1001,7 +1001,7 @@ static void test_SPI_SETSCREENSAVEACTIVE( void ) /* 17 */
if (!test_error_msg(rc,"SPI_{GET,SET}SCREENSAVEACTIVE"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
@@ -1042,7 +1042,7 @@ static void test_SPI_SETKEYBOARDDELAY( void ) /* 23 */
if (!test_error_msg(rc,"SPI_{GET,SET}KEYBOARDDELAY"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT delay;
char buf[10];
@@ -1143,7 +1143,7 @@ static void test_SPI_SETICONTITLEWRAP( void ) /* 26 */
if (!test_error_msg(rc,"SPI_{GET,SET}ICONTITLEWRAP"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
UINT regval;
@@ -1187,7 +1187,7 @@ static void test_SPI_SETMENUDROPALIGNMENT( void ) /* 28 */
if (!test_error_msg(rc,"SPI_{GET,SET}MENUDROPALIGNMENT"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
@@ -1223,7 +1223,7 @@ static void test_SPI_SETDOUBLECLKWIDTH( void ) /* 29 */
trace("testing SPI_{GET,SET}DOUBLECLKWIDTH\n");
old_width = GetSystemMetrics( SM_CXDOUBLECLK );
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
char buf[10];
@@ -1257,7 +1257,7 @@ static void test_SPI_SETDOUBLECLKHEIGHT( void ) /* 30 */
trace("testing SPI_{GET,SET}DOUBLECLKHEIGHT\n");
old_height = GetSystemMetrics( SM_CYDOUBLECLK );
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
char buf[10];
@@ -1347,7 +1347,7 @@ static void test_SPI_SETMOUSEBUTTONSWAP( void ) /* 33 */
trace("testing SPI_{GET,SET}MOUSEBUTTONSWAP\n");
old_b = GetSystemMetrics( SM_SWAPBUTTON );
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
SetLastError(0xdeadbeef);
rc=SystemParametersInfoA( SPI_SETMOUSEBUTTONSWAP, vals[i], 0,
@@ -1402,7 +1402,7 @@ static void test_SPI_SETDRAGFULLWINDOWS( void ) /* 37 */
if (!test_error_msg(rc,"SPI_{GET,SET}DRAGFULLWINDOWS"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
@@ -1925,7 +1925,7 @@ static void test_SPI_SETSHOWSOUNDS( void ) /* 57 */
if (!test_error_msg(rc,"SPI_{GET,SET}SHOWSOUNDS"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
@@ -1962,7 +1962,7 @@ static void test_SPI_SETKEYBOARDPREF( void ) /* 69 */
if (!test_error_msg(rc,"SPI_{GET,SET}KEYBOARDPREF"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
BOOL v;
@@ -1997,7 +1997,7 @@ static void test_SPI_SETSCREENREADER( void ) /* 71 */
if (!test_error_msg(rc,"SPI_{GET,SET}SCREENREADER"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
BOOL v;
@@ -2036,7 +2036,7 @@ static void test_SPI_SETFONTSMOOTHING( void ) /* 75 */
SystemParametersInfoA( SPI_GETFONTSMOOTHINGCONTRAST, 0, &old_contrast, 0 );
SystemParametersInfoA( SPI_GETFONTSMOOTHINGORIENTATION, 0, &old_orient, 0 );
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
@@ -2113,7 +2113,7 @@ static void test_SPI_SETLOWPOWERACTIVE( void ) /* 85 */
if (!test_error_msg(rc,"SPI_{GET,SET}LOWPOWERACTIVE"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
@@ -2151,7 +2151,7 @@ static void test_SPI_SETPOWEROFFACTIVE( void ) /* 86 */
if (!test_error_msg(rc,"SPI_{GET,SET}POWEROFFACTIVE"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
@@ -2189,7 +2189,7 @@ static void test_SPI_SETSNAPTODEFBUTTON( void ) /* 95 */
if (!test_error_msg(rc,"SPI_GETSNAPTODEFBUTTON"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
@@ -2224,7 +2224,7 @@ static void test_SPI_SETMOUSEHOVERWIDTH( void ) /* 99 */
if (!test_error_msg(rc,"SPI_{GET,SET}MOUSEHOVERWIDTH"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
char buf[10];
@@ -2261,7 +2261,7 @@ static void test_SPI_SETMOUSEHOVERHEIGHT( void ) /* 101 */
if (!test_error_msg(rc,"SPI_{GET,SET}MOUSEHOVERHEIGHT"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
char buf[10];
@@ -2302,7 +2302,7 @@ static void test_SPI_SETMOUSEHOVERTIME( void ) /* 103 */
if (!test_error_msg(rc,"SPI_{GET,SET}MOUSEHOVERTIME"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
char buf[10];
@@ -2341,7 +2341,7 @@ static void test_SPI_SETWHEELSCROLLLINES( void ) /* 105 */
if (!test_error_msg(rc,"SPI_{GET,SET}WHEELSCROLLLINES"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
char buf[10];
@@ -2380,7 +2380,7 @@ static void test_SPI_SETMENUSHOWDELAY( void ) /* 107 */
if (!test_error_msg(rc,"SPI_{GET,SET}MENUSHOWDELAY"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
char buf[10];
@@ -2419,7 +2419,7 @@ static void test_SPI_SETWHEELSCROLLCHARS( void ) /* 108 */
if (!test_error_msg(rc,"SPI_{GET,SET}WHEELSCROLLCHARS"))
return;
- for (i=0;i<sizeof(vals)/sizeof(*vals);i++)
+ for (i=0;i<ARRAY_SIZE(vals);i++)
{
UINT v;
char buf[10];
@@ -2489,7 +2489,7 @@ static void test_WM_DISPLAYCHANGE(void)
displaychange_sem = CreateSemaphoreW(NULL, 0, 1, NULL);
- for(i = 0; i < sizeof(test_bpps)/sizeof(test_bpps[0]); i++) {
+ for(i = 0; i < ARRAY_SIZE(test_bpps); i++) {
last_bpp = -1;
memset(&mode, 0, sizeof(mode));
diff --git a/dlls/user32/tests/text.c b/dlls/user32/tests/text.c
index c5bcd50716..359721fcd9 100644
--- a/dlls/user32/tests/text.c
+++ b/dlls/user32/tests/text.c
@@ -765,7 +765,7 @@ static void test_CharToOem_OemToChar(void)
char oem;
WCHAR uni, expect;
- for (i = 0; i < sizeof(tests)/sizeof(tests[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(tests); i++)
{
const char *expected = tests[i].ret ? helloWorld : "";
const char *src = tests[i].src ? helloWorld : NULL;
@@ -792,7 +792,7 @@ static void test_CharToOem_OemToChar(void)
ok(!strcmp(buf, expected), "test %d: got '%s'\n", i, buf);
}
- for (i = 0; i < sizeof(tests)/sizeof(tests[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(tests); i++)
{
const char *expected = tests[i].ret ? helloWorld : "";
const WCHAR *src = tests[i].src ? helloWorldW : NULL;
@@ -804,12 +804,12 @@ static void test_CharToOem_OemToChar(void)
ok(!strcmp(buf, expected), "test %d: got '%s'\n", i, buf);
memset(buf, 0, sizeof(buf));
- ret = CharToOemBuffW(src, dst, sizeof(helloWorldW)/sizeof(WCHAR));
+ ret = CharToOemBuffW(src, dst, ARRAY_SIZE(helloWorldW));
ok(ret == tests[i].ret, "test %d: expected %d, got %d\n", i, tests[i].ret, ret);
ok(!strcmp(buf, expected), "test %d: got '%s'\n", i, buf);
}
- for (i = 0; i < sizeof(tests)/sizeof(tests[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(tests); i++)
{
const WCHAR *expected = tests[i].ret ? helloWorldW : emptyW;
const char *src = tests[i].src ? helloWorld : NULL;
diff --git a/dlls/user32/tests/uitools.c b/dlls/user32/tests/uitools.c
index b52fe3a03a..07cf776a95 100644
--- a/dlls/user32/tests/uitools.c
+++ b/dlls/user32/tests/uitools.c
@@ -175,7 +175,7 @@ static void test_IsRectEmpty(void)
{{-109, -107, -103, -101}, FALSE},
};
- for (i = 0; i < sizeof(rtest)/sizeof(rtest[0]); i++) {
+ for (i = 0; i < ARRAY_SIZE(rtest); i++) {
ret = IsRectEmpty(&rtest[i].rect);
ok(ret == rtest[i].ret, "Test %d: IsRectEmpty returned %s for %s\n", i,
ret ? "TRUE" : "FALSE", wine_dbgstr_rect(&rtest[i].rect));
diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c
index 1f10d66dcd..d7f8843c98 100644
--- a/dlls/user32/tests/win.c
+++ b/dlls/user32/tests/win.c
@@ -2158,7 +2158,7 @@ static void test_mdi(void)
client_cs.hWindowMenu = 0;
client_cs.idFirstChild = 1;
- for (i = 0; i < sizeof(style)/sizeof(style[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(style); i++)
{
SCROLLINFO si;
BOOL ret, gotit;
@@ -6390,7 +6390,7 @@ static void test_set_window_style(void)
cls.lpszClassName = "TestSetWindowStylesClass";
ok(RegisterClassA(&cls), "RegisterClass failed\n");
- for (i = 0; i < sizeof(tests) / sizeof(*tests); i++)
+ for (i = 0; i < ARRAY_SIZE(tests); i++)
{
expected_style = tests[i].style;
if (tests[i].creation_style & WS_MINIMIZE)
@@ -6857,7 +6857,7 @@ static void test_gettext(void)
num_gettext_msgs = 0;
memset( bufW, 0xcc, sizeof(bufW) );
g_wm_gettext_override.buffW = bufW;
- buf_len = GetWindowTextW( hwnd2, bufW, sizeof(bufW)/sizeof(WCHAR) );
+ buf_len = GetWindowTextW( hwnd2, bufW, ARRAY_SIZE(bufW));
ok( buf_len == 0, "got %d\n", buf_len );
ok( *bufW == 0, "got %x\n", *bufW );
ok( num_gettext_msgs == 1, "got %u WM_GETTEXT messages\n", num_gettext_msgs );
@@ -6955,7 +6955,7 @@ static void test_gettext(void)
memset( bufW, 0x1c, sizeof(bufW) );
g_wm_gettext_override.dont_terminate = TRUE;
- buf_len = GetWindowTextW( hwnd, bufW, sizeof(bufW)/sizeof(bufW[0]) );
+ buf_len = GetWindowTextW( hwnd, bufW, ARRAY_SIZE(bufW));
ok( buf_len == 4, "Unexpected text length, %d\n", buf_len );
ok( !memcmp(bufW, textW, 4 * sizeof(WCHAR)), "Unexpected window text, %s\n", wine_dbgstr_w(bufW) );
ok( bufW[4] == 0, "Unexpected buffer contents, %#x\n", bufW[4] );
@@ -6974,7 +6974,7 @@ static void test_gettext(void)
memset( bufW, 0x1c, sizeof(bufW) );
g_wm_gettext_override.dont_terminate = TRUE;
- buf_len = GetWindowTextW( hwnd2, bufW, sizeof(bufW)/sizeof(bufW[0]) );
+ buf_len = GetWindowTextW( hwnd2, bufW, ARRAY_SIZE(bufW));
ok( buf_len == 4, "Unexpected text length, %d\n", buf_len );
ok( !memcmp(bufW, textW, 4 * sizeof(WCHAR)), "Unexpected window text, %s\n", wine_dbgstr_w(bufW) );
ok( bufW[4] == 0x1c1c, "Unexpected buffer contents, %#x\n", bufW[4] );
@@ -7399,7 +7399,7 @@ static void test_hwnd_message(void)
if (parent) ok( !IsWindowVisible( parent ), "HWND_MESSAGE parent is visible\n" );
/* GetWindowLong */
- for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(tests); i++)
{
SetLastError( 0xdeadbeef );
result = GetWindowLongPtrW( parent, tests[i].offset );
@@ -7679,14 +7679,14 @@ static void test_fullscreen(void)
cls.lpszClassName = "fullscreen_class";
RegisterClassA(&cls);
- for (i = 0; i < sizeof(t_style)/sizeof(t_style[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(t_style); i++)
{
DWORD style, ex_style;
/* avoid a WM interaction */
assert(!(t_style[i] & WS_VISIBLE));
- for (j = 0; j < sizeof(t_ex_style)/sizeof(t_ex_style[0]); j++)
+ for (j = 0; j < ARRAY_SIZE(t_ex_style); j++)
{
int fixup;
@@ -8430,7 +8430,7 @@ static void create_window_tree(HWND parent, HWND *window, int size)
memset(window, 0, size * sizeof(window[0]));
pos = 0;
- for (i = 0; i < sizeof(style)/sizeof(style[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(style); i++)
{
assert(pos < size);
window[pos] = CreateWindowExA(0, "my_window", NULL, style[i] | WS_CHILD,
@@ -8577,7 +8577,7 @@ static void test_child_window_from_point(void)
ok(parent != 0, "CreateWindowEx failed\n");
trace("parent %p\n", parent);
- create_window_tree(parent, window, sizeof(window)/sizeof(window[0]));
+ create_window_tree(parent, window, ARRAY_SIZE(window));
found_invisible = 0;
found_disabled = 0;
@@ -8586,14 +8586,14 @@ static void test_child_window_from_point(void)
found_extransparent = 0;
/* FIXME: also test WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx */
- for (i = 0; i < sizeof(real_child_pos)/sizeof(real_child_pos[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(real_child_pos); i++)
{
struct window_attributes attrs;
pt.x = pt.y = 50;
hwnd = RealChildWindowFromPoint(parent, pt);
ok(hwnd != 0, "RealChildWindowFromPoint failed\n");
- ret = window_to_index(hwnd, window, sizeof(window)/sizeof(window[0]));
+ ret = window_to_index(hwnd, window, ARRAY_SIZE(window));
/* FIXME: remove once Wine is fixed */
todo_wine_if (ret != real_child_pos[i])
ok(ret == real_child_pos[i], "expected %d, got %d\n", real_child_pos[i], ret);
@@ -9782,7 +9782,7 @@ static void test_LockWindowUpdate(HWND parent)
UpdateWindow(parent);
flush_events(TRUE);
- for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i)
+ for (i = 0; i < ARRAY_SIZE(tests); ++i)
{
HDC hdc;
POINT p = {10, 10};
@@ -10047,7 +10047,7 @@ static void test_desktop( void )
DWORD_PTR result;
int i;
- for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(tests); i++)
{
SetLastError( 0xdeadbeef );
result = GetWindowLongPtrW( desktop, tests[i].offset );
@@ -10143,7 +10143,7 @@ static void test_topmost(void)
ok(!is_topmost(hwnd), "hwnd %p topmost state is wrong\n", hwnd);
ok(!is_topmost(hwnd2), "hwnd %p topmost state is wrong\n", hwnd2);
check_z_order(hwnd, hwnd2, 0, owner, FALSE);
- reset_window_state(state, sizeof(state)/sizeof(state[0]));
+ reset_window_state(state, ARRAY_SIZE(state));
swp_after(hwnd, HWND_TOPMOST);
ok(!is_topmost(owner), "hwnd %p topmost state is wrong\n", owner);
@@ -10183,7 +10183,7 @@ todo_wine
ok(!is_topmost(hwnd2), "hwnd %p topmost state is wrong\n", hwnd2);
if (!is_wine) /* FIXME: remove once Wine is fixed */
check_z_order(hwnd, 0, hwnd2, owner, FALSE);
- reset_window_state(state, sizeof(state)/sizeof(state[0]));
+ reset_window_state(state, ARRAY_SIZE(state));
swp_after(hwnd, HWND_TOPMOST);
ok(!is_topmost(owner), "hwnd %p topmost state is wrong\n", owner);
@@ -10197,7 +10197,7 @@ todo_wine
ok(!is_topmost(hwnd2), "hwnd %p topmost state is wrong\n", hwnd2);
if (!is_wine) /* FIXME: remove once Wine is fixed */
check_z_order(hwnd, 0, hwnd2, owner, FALSE);
- reset_window_state(state, sizeof(state)/sizeof(state[0]));
+ reset_window_state(state, ARRAY_SIZE(state));
swp_after(hwnd, HWND_TOPMOST);
ok(!is_topmost(owner), "hwnd %p topmost state is wrong\n", owner);
@@ -10218,7 +10218,7 @@ if (!is_wine) /* FIXME: remove once Wine is fixed */
ok(!is_topmost(hwnd2), "hwnd %p topmost state is wrong\n", hwnd2);
if (!is_wine) /* FIXME: remove once Wine is fixed */
check_z_order(hwnd, 0, hwnd2, owner, FALSE);
- reset_window_state(state, sizeof(state)/sizeof(state[0]));
+ reset_window_state(state, ARRAY_SIZE(state));
hwnd_child2 = create_tool_window(WS_VISIBLE|WS_POPUP, hwnd);
ok(hwnd_child2 != 0, "Failed to create popup window (%d)\n", GetLastError());
@@ -10268,7 +10268,7 @@ todo_wine
if (!is_wine) /* FIXME: remove once Wine is fixed */
check_z_order(hwnd, hwnd2, 0, owner, FALSE);
check_z_order(hwnd_child, hwnd_child2, 0, hwnd, FALSE);
- reset_window_state(state, sizeof(state)/sizeof(state[0]));
+ reset_window_state(state, ARRAY_SIZE(state));
swp_after(hwnd, HWND_TOPMOST);
ok(!is_topmost(owner), "hwnd %p topmost state is wrong\n", owner);
@@ -10292,7 +10292,7 @@ todo_wine
ok(!is_topmost(hwnd_grandchild), "hwnd %p topmost state is wrong\n", hwnd_grandchild);
check_z_order(hwnd, hwnd2, 0, owner, FALSE);
check_z_order(hwnd_child, hwnd_child2, 0, hwnd, FALSE);
- reset_window_state(state, sizeof(state)/sizeof(state[0]));
+ reset_window_state(state, ARRAY_SIZE(state));
swp_after(hwnd, HWND_TOPMOST);
ok(!is_topmost(owner), "hwnd %p topmost state is wrong\n", owner);
@@ -10316,7 +10316,7 @@ todo_wine
ok(!is_topmost(hwnd_grandchild), "hwnd %p topmost state is wrong\n", hwnd_grandchild);
check_z_order(hwnd, hwnd2, 0, owner, FALSE);
check_z_order(hwnd_child, hwnd_child2, 0, hwnd, FALSE);
- reset_window_state(state, sizeof(state)/sizeof(state[0]));
+ reset_window_state(state, ARRAY_SIZE(state));
swp_after(hwnd_child, HWND_TOPMOST);
ok(!is_topmost(owner), "hwnd %p topmost state is wrong\n", owner);
@@ -10350,7 +10350,7 @@ todo_wine
if (!is_wine) /* FIXME: remove once Wine is fixed */
check_z_order(hwnd, hwnd2, 0, owner, FALSE);
check_z_order(hwnd_child, hwnd_child2, 0, hwnd, FALSE);
- reset_window_state(state, sizeof(state)/sizeof(state[0]));
+ reset_window_state(state, ARRAY_SIZE(state));
swp_after(hwnd_child, HWND_TOPMOST);
ok(!is_topmost(owner), "hwnd %p topmost state is wrong\n", owner);
@@ -10373,7 +10373,7 @@ todo_wine
if (!is_wine) /* FIXME: remove once Wine is fixed */
check_z_order(hwnd, hwnd2, 0, owner, FALSE);
check_z_order(hwnd_child, hwnd_child2, 0, hwnd, FALSE);
- reset_window_state(state, sizeof(state)/sizeof(state[0]));
+ reset_window_state(state, ARRAY_SIZE(state));
swp_after(hwnd_grandchild, HWND_TOPMOST);
ok(!is_topmost(owner), "hwnd %p topmost state is wrong\n", owner);
@@ -10394,7 +10394,7 @@ if (!is_wine) /* FIXME: remove once Wine is fixed */
check_z_order(hwnd, hwnd2, 0, owner, FALSE);
if (!is_wine) /* FIXME: remove once Wine is fixed */
check_z_order(hwnd_child, 0, hwnd_child2, hwnd, FALSE);
- reset_window_state(state, sizeof(state)/sizeof(state[0]));
+ reset_window_state(state, ARRAY_SIZE(state));
swp_after(hwnd_child, HWND_TOPMOST);
ok(!is_topmost(owner), "hwnd %p topmost state is wrong\n", owner);
@@ -10418,7 +10418,7 @@ if (!is_wine) /* FIXME: remove once Wine is fixed */
check_z_order(hwnd, 0, hwnd2, owner, FALSE);
if (!is_wine) /* FIXME: remove once Wine is fixed */
check_z_order(hwnd_child, 0, hwnd_child2, hwnd, FALSE);
- reset_window_state(state, sizeof(state)/sizeof(state[0]));
+ reset_window_state(state, ARRAY_SIZE(state));
swp_after(hwnd_child, HWND_TOPMOST);
ok(!is_topmost(owner), "hwnd %p topmost state is wrong\n", owner);
@@ -10442,7 +10442,7 @@ if (!is_wine) /* FIXME: remove once Wine is fixed */
check_z_order(hwnd, hwnd2, 0, owner, FALSE);
if (!is_wine) /* FIXME: remove once Wine is fixed */
check_z_order(hwnd_child, 0, hwnd_child2, hwnd, FALSE);
- reset_window_state(state, sizeof(state)/sizeof(state[0]));
+ reset_window_state(state, ARRAY_SIZE(state));
DestroyWindow(hwnd_grandchild);
DestroyWindow(hwnd_child);
diff --git a/dlls/user32/tests/wsprintf.c b/dlls/user32/tests/wsprintf.c
index f0e80b2ad6..f79b6306a7 100644
--- a/dlls/user32/tests/wsprintf.c
+++ b/dlls/user32/tests/wsprintf.c
@@ -66,7 +66,7 @@ static void wsprintfATest(void)
win_skip( "I64 formats not supported\n" );
return;
}
- for (i = 0; i < sizeof(i64_formats)/sizeof(i64_formats[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(i64_formats); i++)
{
rc = wsprintfA(buf, i64_formats[i].fmt, i64_formats[i].value);
ok(rc == strlen(i64_formats[i].res), "%u: wsprintfA length failure: rc=%d\n", i, rc);
@@ -98,10 +98,10 @@ static void wsprintfWTest(void)
win_skip( "I64 formats not supported\n" );
return;
}
- for (i = 0; i < sizeof(i64_formats)/sizeof(i64_formats[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(i64_formats); i++)
{
- MultiByteToWideChar( CP_ACP, 0, i64_formats[i].fmt, -1, fmt, sizeof(fmt)/sizeof(WCHAR) );
- MultiByteToWideChar( CP_ACP, 0, i64_formats[i].res, -1, res, sizeof(res)/sizeof(WCHAR) );
+ MultiByteToWideChar( CP_ACP, 0, i64_formats[i].fmt, -1, fmt, ARRAY_SIZE(fmt));
+ MultiByteToWideChar( CP_ACP, 0, i64_formats[i].res, -1, res, ARRAY_SIZE(res));
rc = wsprintfW(buf, fmt, i64_formats[i].value);
ok(rc == lstrlenW(res), "%u: wsprintfW length failure: rc=%d\n", i, rc);
ok(!lstrcmpW(buf, res), "%u: wrong result [%s]\n", i, wine_dbgstr_w(buf));
--
2.14.4
2
1
Signed-off-by: AndrƩ Hentschel <nerv(a)dawncrow.de>
---
dlls/dbghelp/cpu_arm64.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/dbghelp/cpu_arm64.c b/dlls/dbghelp/cpu_arm64.c
index dea19f8..f50b325 100644
--- a/dlls/dbghelp/cpu_arm64.c
+++ b/dlls/dbghelp/cpu_arm64.c
@@ -158,6 +158,7 @@ static unsigned arm64_map_dwarf_register(unsigned regno, BOOL eh_frame)
if (regno == 29) return CV_ARM64_FP;
if (regno == 30) return CV_ARM64_LR;
if (regno == 31) return CV_ARM64_SP;
+ if (regno >= 64 && regno <= 95) return CV_ARM64_Q0 + regno - 64;
FIXME("Don't know how to map register %d\n", regno);
return CV_ARM64_NOREG;
--
2.7.4
1
0
Bug #45385 related to keyboard and probably wineserver - where to start the search
by John Found June 28, 2018
by John Found June 28, 2018
June 28, 2018
I just reported bug #45385 (https://bugs.winehq.org/show_bug.cgi?id=45385) and want to try to fix it.
So I want to ask about some preliminary directions - where to check the code,
what is the general structure of the code related to the bug subject, possible suspicious places.
Here is the full bug report in order to save you a visit to the bug tracker:
> I noticed that the state of the keys sometimes sticks in pressed state.
>
> This happens when cycling windows with some shortcut key combination.
>
> For example if cycling with Alt+Tab, on pressing Alt, the program gets WM_KEYDOWN and the state of the VK_MENU becomes pressed. But after cycling windows, the program does not get WM_KEYUP because the window is not focused and VK_MENU (and the respective VK_LMENU or VK_RMENU) remain in pressed state.
>
> When cycling back to the program window, the window get focused only after releasing Alt key, so it does not get this event as well.
>
> If cycling windows with another shortcut key combination (for example Alt+Shift+Tab - for backward cycling) both VK_MENU and VK_SHIFT keys stick.
>
> In the same time, GetAsyncKeyState returns the proper state of the keys.
>
> Note1: The problem is obviously in the wineserver code, because it handles the key state tables for the different threads.
>
> Note2: The effect happens only sometimes. It seems the code for proper processing is already there, but some racing conditions have place.
>
> Note3: There is some probability that the effect is in result of my application code, but it never happens on real Windows, so I considered it a bug.
>
> Note4: I tried to workaround this problem by reading the whole table by GetAsyncKeyState and setting it then with SetKeyboardState on WM_ACTIVATE message of the main window. This workaround actually works, but is too ugly IMO.
> The same trick on WM_ACTIVATEAPP does not work.
--
John Found <johnfound(a)asm32.info>
4
8
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
dlls/user32/tests/monitor.c | 3 +--
dlls/user32/tests/win.c | 15 ++++++---------
2 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/dlls/user32/tests/monitor.c b/dlls/user32/tests/monitor.c
index dfdca49e79..4d7b020e14 100644
--- a/dlls/user32/tests/monitor.c
+++ b/dlls/user32/tests/monitor.c
@@ -150,7 +150,6 @@ static const struct vid_mode vid_modes_test[] = {
{0, 0, 0, 0, DM_DISPLAYFREQUENCY, 0}
*/
};
-#define vid_modes_cnt (sizeof(vid_modes_test) / sizeof(vid_modes_test[0]))
static void test_ChangeDisplaySettingsEx(void)
{
@@ -237,7 +236,7 @@ static void test_ChangeDisplaySettingsEx(void)
memset(&dm, 0, sizeof(dm));
dm.dmSize = sizeof(dm);
- for (i = 0; i < vid_modes_cnt; i++)
+ for (i = 0; i < ARRAY_SIZE(vid_modes_test); i++)
{
dm.dmPelsWidth = vid_modes_test[i].w;
dm.dmPelsHeight = vid_modes_test[i].h;
diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c
index ac706aa4bf..1f10d66dcd 100644
--- a/dlls/user32/tests/win.c
+++ b/dlls/user32/tests/win.c
@@ -84,8 +84,6 @@ static const char* szAWRClass = "Winsize";
static HMENU hmenu;
static DWORD our_pid;
-#define COUNTOF(arr) (sizeof(arr)/sizeof(arr[0]))
-
static void dump_minmax_info( const MINMAXINFO *minmax )
{
trace("Reserved=%d,%d MaxSize=%d,%d MaxPos=%d,%d MinTrack=%d,%d MaxTrack=%d,%d\n",
@@ -5289,9 +5287,9 @@ static void test_AWR_window_size(BOOL menu)
/* A exhaustive check of all the styles takes too long
* so just do a (hopefully representative) sample
*/
- for (i = 0; i < COUNTOF(styles); ++i)
+ for (i = 0; i < ARRAY_SIZE(styles); ++i)
test_AWRwindow(szAWRClass, styles[i], 0, menu);
- for (i = 0; i < COUNTOF(exStyles); ++i) {
+ for (i = 0; i < ARRAY_SIZE(exStyles); ++i) {
test_AWRwindow(szAWRClass, WS_POPUP, exStyles[i], menu);
test_AWRwindow(szAWRClass, WS_THICKFRAME, exStyles[i], menu);
}
@@ -5306,13 +5304,13 @@ static void test_AWR_flags(void)
DWORD i, j, k, style, exstyle;
RECT rect, rect2;
- for (i = 0; i < (1 << COUNTOF(styles)); i++)
+ for (i = 0; i < (1 << ARRAY_SIZE(styles)); i++)
{
- for (k = style = 0; k < COUNTOF(styles); k++) if (i & (1 << k)) style |= styles[k];
+ for (k = style = 0; k < ARRAY_SIZE(styles); k++) if (i & (1 << k)) style |= styles[k];
- for (j = 0; j < (1 << COUNTOF(exStyles)); j++)
+ for (j = 0; j < (1 << ARRAY_SIZE(exStyles)); j++)
{
- for (k = exstyle = 0; k < COUNTOF(exStyles); k++) if (j & (1 << k)) exstyle |= exStyles[k];
+ for (k = exstyle = 0; k < ARRAY_SIZE(exStyles); k++) if (j & (1 << k)) exstyle |= exStyles[k];
SetRect( &rect, 100, 100, 200, 200 );
rect2 = rect;
AdjustWindowRectEx( &rect, style, FALSE, exstyle );
@@ -5329,7 +5327,6 @@ static void test_AWR_flags(void)
}
}
}
-#undef COUNTOF
#define SHOWSYSMETRIC(SM) trace(#SM "=%d\n", GetSystemMetrics(SM))
--
2.14.4
1
0
[PATCH v2 1/4] explorer: Add a private message to notify the graphics driver when activity occurs.
by Zebediah Figura June 28, 2018
by Zebediah Figura June 28, 2018
June 28, 2018
Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com>
---
programs/explorer/desktop.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c
index a2d9e1a..f5a01c2 100644
--- a/programs/explorer/desktop.c
+++ b/programs/explorer/desktop.c
@@ -46,6 +46,10 @@ static const WCHAR default_driver[] = {'m','a','c',',','x','1','1',0};
static const WCHAR default_driver[] = {'x','1','1',0};
#endif
+static void (CDECL *wine_notify_activity)(void);
+
+#define WM_WINE_NOTIFY_ACTIVITY WM_USER
+
static BOOL using_root;
struct launcher
@@ -661,6 +665,11 @@ static LRESULT WINAPI desktop_wnd_proc( HWND hwnd, UINT message, WPARAM wp, LPAR
}
return 0;
+ case WM_WINE_NOTIFY_ACTIVITY:
+ if (wine_notify_activity)
+ wine_notify_activity();
+ return 0;
+
default:
return DefWindowProcW( hwnd, message, wp, lp );
}
@@ -1005,6 +1014,8 @@ void manage_desktop( WCHAR *arg )
{
pShellDDEInit( TRUE );
}
+
+ wine_notify_activity = (void *)GetProcAddress( graphics_driver, "wine_notify_activity" );
}
}
--
2.7.4
3
6
[PATCH] hnetcfg: Store the long path in INetFwAuthorizedApplication_put_ProcessImageFileName().
by Zebediah Figura June 28, 2018
by Zebediah Figura June 28, 2018
June 28, 2018
Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com>
---
dlls/hnetcfg/apps.c | 14 ++++++++++++--
dlls/hnetcfg/tests/policy.c | 1 +
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/dlls/hnetcfg/apps.c b/dlls/hnetcfg/apps.c
index 69eabd6..21e1007 100644
--- a/dlls/hnetcfg/apps.c
+++ b/dlls/hnetcfg/apps.c
@@ -268,9 +268,9 @@ static HRESULT WINAPI fw_app_put_ProcessImageFileName(
{
fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
UNIVERSAL_NAME_INFOW *info;
+ DWORD sz, longsz;
WCHAR *path;
DWORD res;
- DWORD sz;
FIXME("%p, %s\n", This, debugstr_w(image));
@@ -298,9 +298,19 @@ static HRESULT WINAPI fw_app_put_ProcessImageFileName(
sz = GetFullPathNameW(image, 0, NULL, NULL);
if (!(path = heap_alloc(++sz * sizeof(WCHAR))))
return E_OUTOFMEMORY;
-
GetFullPathNameW(image, sz, path, NULL);
+ longsz = GetLongPathNameW(path, path, sz);
+ if (longsz > sz)
+ {
+ if (!(path = heap_realloc(path, longsz * sizeof(WCHAR))))
+ {
+ heap_free(path);
+ return E_OUTOFMEMORY;
+ }
+ GetLongPathNameW(path, path, longsz);
+ }
+
SysFreeString( This->filename );
This->filename = SysAllocString(path);
heap_free(path);
diff --git a/dlls/hnetcfg/tests/policy.c b/dlls/hnetcfg/tests/policy.c
index 389be16..4e90ceb 100644
--- a/dlls/hnetcfg/tests/policy.c
+++ b/dlls/hnetcfg/tests/policy.c
@@ -140,6 +140,7 @@ static void test_NetFwAuthorizedApplication(void)
SysFreeString(bstr);
GetFullPathNameW(image, ARRAY_SIZE(fullpath), fullpath, NULL);
+ GetLongPathNameW(fullpath, fullpath, ARRAY_SIZE(fullpath));
info = (UNIVERSAL_NAME_INFOW *)&netpath;
sz = sizeof(netpath);
--
2.7.4
1
0
[PATCH] configure: Allow building bcrypt with GnuTLS support on macOS.
by Hans Leidekker June 28, 2018
by Hans Leidekker June 28, 2018
June 28, 2018
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
configure.ac | 1 -
1 file changed, 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 9c38cfb376..d10acde146 100644
--- a/configure.ac
+++ b/configure.ac
@@ -789,7 +789,6 @@ case $host_os in
LIBS="$LIBS $SECURITY_LIBS"
AC_CHECK_FUNCS(SSLCopyPeerCertificates)
LIBS="$ac_save_LIBS"
- with_gnutls=${with_gnutls:-no}
fi
if test "$ac_cv_header_CoreAudio_CoreAudio_h" = "yes" -a "$ac_cv_header_AudioUnit_AudioUnit_h" = "yes"
then
--
2.11.0
1
0
Dear folks,
(Long time no see, hey!)
I know many Wine contributors are in WineConf, some of you might even
be missing me <grin>, so it's the perfect time to raise this topic :)
And I know new Wine contributors join the community every year, so I
should introduce a bit about myself ^_^
I'm Qian Hong, a former Wine contributor since 2012. In 2016, I move
my focus from upstream Wine to Tea CI https://tea-ci.org
Tea CI is a *C*ontinuous *I*ntegration platform which supports
building both Linux application and Windows application, it's the only
platform which supports building Windows application without depending
on any Windows License because of the utilizing of Wine. For people
who aren't familiar with fashion words like CI, think about it like
our Wine TestBot, which builds and tests software automatically.
Here are some examples of how people use Tea CI:
https://tea-ci.org/mamedev/mame
https://tea-ci.org/concurrencykit/ck
https://tea-ci.org/Alexpux/MINGW-packages
There are currently 200 registered users of Tea CI, while only a few
of them are active.
I (co)founded Tea CI as a non-profit project for some ambitious goals,
which I'm shy to tell anymore because it doesn't work out. I admit it
is not very successful, it wasn't updated for more than one year,
Msys2/MinGW packages are outdated, Wine compatibility issues are
remaining unfixed, Web UI is not friendly enough, documentation is not
complete, the future is unclear, etc... However, I do appreciate lots
of people who helped Tea CI in many different ways, including but not
limited to Wine/Wine Staging developers, Cygwin/Msys2/GDB developers,
Drone CI developers, Mozilla RR developer, Arch developer, and many
many more.
I was considering shutting down Tea CI because lacking maintenance and
other reasons, however, I received positive feedback from some users:
>>>
XXX (A startup) is happy to cover your server costs as a sponsor. If
it is 98 EUR per month we can cover full cost. Would that help towards
keeping it active?
<<<
>>>
it is very convenient to do windows builds and I would use it
more if it were updated and taken care of. I do have (and had) a few
projects that could use it, some of them were commercial.
<<<
>>>
I think this is one of a few projects providing windows builds
without actual windows server. This alone makes it worth the while.
<<<
>>>
I would be willing to support the project financially (though not the
full amount), if someone would be maintaining and improving it (perhaps
under your supervision?).
<<<
>>>
It's been a solid platform, and even though we only build 'tiny'
builds on a single platform, and not most of the components, we've
done it for practically every commit these last 18 months.
It will be a shame to lose it, and I'm not sure what out-of-the-box
solution would replace it for Msys2/MinGW.
<<<
>>>
We are currently using Tea CI in a major project, ConcurrencyKit. CK
is a very UNIX oriented library, so Tea CI made things very easy.
<<<
To be fair, I should also share negative feedback like:
>>>
I last used TeaCI for about a year starting ~2 years ago, using it
once to twice a week. ultimately, various bugs from ancient Cygwin
versions led me move most of my infrastructure to MSVC and use
AppVeyor. I appreciate all the money and hard work you have put in,
but ultimately, I have no issue if TeaCI shuts down.
<<<
As one might see, it could be a pity if no one maintains Tea CI.
However, due to personal reasons, I'm not able to spend enough time
and energy to improve Tea CI, that's why I am hoping to transfer the
owner of Tea CI. The most challenging part of Tea CI is keeping Wine
compatible with Cygwin/Msys2, which requires experienced Wine
development skills, and most people who have the skill are subscribing
to this list :)
I know looking for future maintainers of Tea CI is much harder than
looking for a job, people who have the skill are likely to have no
time. However, I am still very keen to ask: by any chance, would
anyone be interested in taking a look, or at least raise a discussion
during/after WineConf?
If anyone is interested in a follow up of the discussion, I'm glad to
answer any questions about Tea CI.
Looking forward to hearing from you!
--
Regards,
Qian Hong
1
0
[PATCH 2/2] inetcpl.cpl: Add partial support for writing DefaultConnectionSettings registry setting
by Piotr Caban June 28, 2018
by Piotr Caban June 28, 2018
June 28, 2018
IE 10+ saves connection information in this key. .NET 4.6.2 is using the
key to read proxy settings.
Signed-off-by: Piotr Caban <piotr(a)codeweavers.com>
---
dlls/inetcpl.cpl/connections.c | 83
+++++++++++++++++++++++++++++++++++++++++-
1 file changed, 81 insertions(+), 2 deletions(-)
1
0
June 28, 2018
Signed-off-by: Piotr Caban <piotr(a)codeweavers.com>
---
dlls/inetcpl.cpl/Makefile.in | 1 +
dlls/inetcpl.cpl/connections.c | 178
+++++++++++++++++++++++++++++++++++++++++
dlls/inetcpl.cpl/inetcpl.c | 6 ++
dlls/inetcpl.cpl/inetcpl.h | 6 ++
dlls/inetcpl.cpl/inetcpl.rc | 14 ++++
5 files changed, 205 insertions(+)
create mode 100644 dlls/inetcpl.cpl/connections.c
1
0
[PATCH] iphlpapi: Cast caddr_t to char* before doing pointer arithmetic
by Alex Henrie June 28, 2018
by Alex Henrie June 28, 2018
June 28, 2018
Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com>
---
Fixes https://bugs.winehq.org/show_bug.cgi?id=18164
dlls/iphlpapi/ifenum.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/iphlpapi/ifenum.c b/dlls/iphlpapi/ifenum.c
index eed1be15d1..c3abdf0e53 100644
--- a/dlls/iphlpapi/ifenum.c
+++ b/dlls/iphlpapi/ifenum.c
@@ -1013,13 +1013,13 @@ static DWORD enumIPAddresses(PDWORD pcAddresses, struct ifconf *ifc)
if (ioctlRet == 0) {
ifPtr = ifc->ifc_buf;
- while (ifPtr && ifPtr < ifc->ifc_buf + ifc->ifc_len) {
+ while (ifPtr && (char *)ifPtr < ifc->ifc_buf + ifc->ifc_len) {
struct ifreq *ifr = (struct ifreq *)ifPtr;
if (ifr->ifr_addr.sa_family == AF_INET)
numAddresses++;
- ifPtr += ifreq_len((struct ifreq *)ifPtr);
+ ifPtr = (char *)ifPtr + ifreq_len((struct ifreq *)ifPtr);
}
}
else
@@ -1074,10 +1074,10 @@ DWORD getIPAddrTable(PMIB_IPADDRTABLE *ppIpAddrTable, HANDLE heap, DWORD flags)
ret = NO_ERROR;
(*ppIpAddrTable)->dwNumEntries = numAddresses;
ifPtr = ifc.ifc_buf;
- while (!ret && ifPtr && ifPtr < ifc.ifc_buf + ifc.ifc_len) {
+ while (!ret && ifPtr && (char *)ifPtr < ifc.ifc_buf + ifc.ifc_len) {
struct ifreq *ifr = (struct ifreq *)ifPtr;
- ifPtr += ifreq_len(ifr);
+ ifPtr = (char *)ifPtr + ifreq_len(ifr);
if (ifr->ifr_addr.sa_family != AF_INET)
continue;
--
2.18.0
2
1
[PATCH 6/6] user32: For an owner-drawn listbox without strings WM_MEASUREITEM still needs correct itemData.
by Dmitry Timoshkov June 28, 2018
by Dmitry Timoshkov June 28, 2018
June 28, 2018
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
dlls/user32/listbox.c | 2 +-
dlls/user32/tests/msg.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/user32/listbox.c b/dlls/user32/listbox.c
index 9caccf6097..af8ee40311 100644
--- a/dlls/user32/listbox.c
+++ b/dlls/user32/listbox.c
@@ -1554,7 +1554,7 @@ static LRESULT LISTBOX_InsertItem( LB_DESCR *descr, INT index,
mis.CtlType = ODT_LISTBOX;
mis.CtlID = id;
mis.itemID = index;
- mis.itemData = data;
+ mis.itemData = str ? (ULONG_PTR)str : data;
mis.itemHeight = descr->item_height;
SendMessageW( descr->owner, WM_MEASUREITEM, id, (LPARAM)&mis );
item->height = mis.itemHeight ? mis.itemHeight : 1;
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index da017667e0..052b9b9aae 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -14387,7 +14387,7 @@ static void test_listbox_messages(void)
ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 2");
ok(ret == 2, "expected 2, got %ld\n", ret);
- ok_sequence(wm_lb_addstring_sort_ownerdraw, "LB_ADDSTRING", TRUE);
+ ok_sequence(wm_lb_addstring_sort_ownerdraw, "LB_ADDSTRING", FALSE);
check_lb_state(listbox, 3, LB_ERR, 0, 0);
log_all_parent_messages--;
--
2.16.3
2
1
[PATCH 4/6] user32: Fix order of items passed in WM_COMPAREITEM data.
by Dmitry Timoshkov June 28, 2018
by Dmitry Timoshkov June 28, 2018
June 28, 2018
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
dlls/user32/listbox.c | 12 ++++++------
dlls/user32/tests/msg.c | 4 ----
2 files changed, 6 insertions(+), 10 deletions(-)
diff --git a/dlls/user32/listbox.c b/dlls/user32/listbox.c
index 8df67634d3..490033902c 100644
--- a/dlls/user32/listbox.c
+++ b/dlls/user32/listbox.c
@@ -835,7 +835,7 @@ static INT LISTBOX_FindStringPos( LB_DESCR *descr, LPCWSTR str, BOOL exact )
{
index = (min + max) / 2;
if (HAS_STRINGS(descr))
- res = LISTBOX_lstrcmpiW( descr->locale, str, descr->items[index].str);
+ res = LISTBOX_lstrcmpiW( descr->locale, descr->items[index].str, str );
else
{
COMPAREITEMSTRUCT cis;
@@ -846,15 +846,15 @@ static INT LISTBOX_FindStringPos( LB_DESCR *descr, LPCWSTR str, BOOL exact )
cis.hwndItem = descr->self;
/* note that some application (MetaStock) expects the second item
* to be in the listbox */
- cis.itemID1 = -1;
- cis.itemData1 = (ULONG_PTR)str;
- cis.itemID2 = index;
- cis.itemData2 = descr->items[index].data;
+ cis.itemID1 = index;
+ cis.itemData1 = descr->items[index].data;
+ cis.itemID2 = -1;
+ cis.itemData2 = (ULONG_PTR)str;
cis.dwLocaleId = descr->locale;
res = SendMessageW( descr->owner, WM_COMPAREITEM, id, (LPARAM)&cis );
}
if (!res) return index;
- if (res < 0) max = index;
+ if (res > 0) max = index;
else min = index + 1;
}
return exact ? -1 : max;
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index 5a5d5ed5fe..da017667e0 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -2276,9 +2276,7 @@ static void add_message_(int line, const struct recvd_message *msg)
ok(msg->wParam == cis->CtlID, "expected %#x, got %#lx\n", cis->CtlID, msg->wParam);
ok(cis->hwndItem == ctrl, "expected %p, got %p\n", ctrl, cis->hwndItem);
-todo_wine
ok((int)cis->itemID1 >= 0, "expected >= 0, got %d\n", cis->itemID1);
-todo_wine
ok((int)cis->itemID2 == -1, "expected -1, got %d\n", cis->itemID2);
sprintf( seq->output, "%s: %p WM_COMPAREITEM: CtlType %#x, CtlID %#x, itemID1 %#x, itemData1 %#lx, itemID2 %#x, itemData2 %#lx",
@@ -14385,10 +14383,8 @@ static void test_listbox_messages(void)
ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 0");
ok(ret == 0, "expected 0, got %ld\n", ret);
ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 1");
-todo_wine
ok(ret == 1, "expected 1, got %ld\n", ret);
ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 2");
-todo_wine
ok(ret == 2, "expected 2, got %ld\n", ret);
ok_sequence(wm_lb_addstring_sort_ownerdraw, "LB_ADDSTRING", TRUE);
--
2.16.3
2
1
[PATCH 2/6] user32/tests: Add a message test for an owner-drawn sorted listbox.
by Dmitry Timoshkov June 28, 2018
by Dmitry Timoshkov June 28, 2018
June 28, 2018
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
dlls/user32/tests/msg.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 88 insertions(+), 3 deletions(-)
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index 1c3b639aa0..0df9687ae2 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -2243,18 +2243,61 @@ static void add_message_(int line, const struct recvd_message *msg)
{
MEASURE_ITEM_STRUCT mi;
MEASUREITEMSTRUCT *mis = (MEASUREITEMSTRUCT *)msg->lParam;
+ BOOL is_unicode_data = TRUE;
sprintf( seq->output, "%s: %p WM_MEASUREITEM: CtlType %#x, CtlID %#x, itemID %#x, itemData %#lx",
msg->descr, msg->hwnd, mis->CtlType, mis->CtlID,
mis->itemID, mis->itemData);
+ if (mis->CtlType == ODT_LISTBOX)
+ {
+ HWND ctrl = GetDlgItem(msg->hwnd, mis->CtlID);
+ is_unicode_data = GetWindowLongA(ctrl, GWL_STYLE) & LBS_HASSTRINGS;
+ }
+
mi.u.wp = 0;
mi.u.item.CtlType = mis->CtlType;
mi.u.item.CtlID = mis->CtlID;
mi.u.item.itemID = mis->itemID;
mi.u.item.wParam = msg->wParam;
seq->wParam = mi.u.wp;
- seq->lParam = mis->itemData ? hash_Ly_W((const WCHAR *)mis->itemData) : 0;
+ if (is_unicode_data)
+ seq->lParam = mis->itemData ? hash_Ly_W((const WCHAR *)mis->itemData) : 0;
+ else
+ seq->lParam = mis->itemData ? hash_Ly((const char *)mis->itemData) : 0;
+ break;
+ }
+
+ case WM_COMPAREITEM:
+ {
+ COMPAREITEMSTRUCT *cis = (COMPAREITEMSTRUCT *)msg->lParam;
+ HWND ctrl = GetDlgItem(msg->hwnd, cis->CtlID);
+ BOOL is_unicode_data = TRUE;
+
+ ok(msg->wParam == cis->CtlID, "expected %#x, got %#lx\n", cis->CtlID, msg->wParam);
+ ok(cis->hwndItem == ctrl, "expected %p, got %p\n", ctrl, cis->hwndItem);
+todo_wine
+ ok((int)cis->itemID1 >= 0, "expected >= 0, got %d\n", cis->itemID1);
+todo_wine
+ ok((int)cis->itemID2 == -1, "expected -1, got %d\n", cis->itemID2);
+
+ sprintf( seq->output, "%s: %p WM_COMPAREITEM: CtlType %#x, CtlID %#x, itemID1 %#x, itemData1 %#lx, itemID2 %#x, itemData2 %#lx",
+ msg->descr, msg->hwnd, cis->CtlType, cis->CtlID,
+ cis->itemID1, cis->itemData1, cis->itemID2, cis->itemData2);
+
+ if (cis->CtlType == ODT_LISTBOX)
+ is_unicode_data = GetWindowLongA(ctrl, GWL_STYLE) & LBS_HASSTRINGS;
+
+ if (is_unicode_data)
+ {
+ seq->wParam = cis->itemData1 ? hash_Ly_W((const WCHAR *)cis->itemData1) : 0;
+ seq->lParam = cis->itemData2 ? hash_Ly_W((const WCHAR *)cis->itemData2) : 0;
+ }
+ else
+ {
+ seq->wParam = cis->itemData1 ? hash_Ly((const char *)cis->itemData1) : 0;
+ seq->lParam = cis->itemData2 ? hash_Ly((const char *)cis->itemData2) : 0;
+ }
break;
}
@@ -9044,7 +9087,7 @@ static LRESULT WINAPI ParentMsgCheckProcA(HWND hwnd, UINT message, WPARAM wParam
message == WM_PARENTNOTIFY || message == WM_CANCELMODE ||
message == WM_SETFOCUS || message == WM_KILLFOCUS ||
message == WM_ENABLE || message == WM_ENTERIDLE ||
- message == WM_DRAWITEM || message == WM_MEASUREITEM ||
+ message == WM_DRAWITEM || message == WM_MEASUREITEM || message == WM_COMPAREITEM ||
message == WM_COMMAND || message == WM_IME_SETCONTEXT)
{
switch (message)
@@ -9092,7 +9135,7 @@ static LRESULT WINAPI ParentMsgCheckProcA(HWND hwnd, UINT message, WPARAM wParam
ret = DefWindowProcA(hwnd, message, wParam, lParam);
defwndproc_counter--;
- return ret;
+ return message == WM_COMPAREITEM ? -1 : ret;
}
static INT_PTR CALLBACK StopQuitMsgCheckProcA(HWND hwnd, UINT message, WPARAM wp, LPARAM lp)
@@ -14159,6 +14202,19 @@ static const struct message wm_lb_addstring[] =
{ WM_MEASUREITEM, sent|wparam|lparam|parent, 0xf2f2, 0xf30604ef },
{ 0 }
};
+static const struct message wm_lb_addstring_sort[] =
+{
+ { LB_ADDSTRING, sent|wparam|lparam, 0, 0xf30604ed },
+ { WM_MEASUREITEM, sent|wparam|lparam|parent, 0xf0f2, 0xf30604ed },
+ { LB_ADDSTRING, sent|wparam|lparam, 0, 0xf30604ee },
+ { WM_COMPAREITEM, sent|wparam|lparam|parent, 0xf30604ed, 0xf30604ee },
+ { WM_MEASUREITEM, sent|wparam|lparam|parent, 0xf1f2, 0xf30604ee },
+ { LB_ADDSTRING, sent|wparam|lparam, 0, 0xf30604ef },
+ { WM_COMPAREITEM, sent|wparam|lparam|parent, 0xf30604ed, 0xf30604ef },
+ { WM_COMPAREITEM, sent|wparam|lparam|parent, 0xf30604ee, 0xf30604ef },
+ { WM_MEASUREITEM, sent|wparam|lparam|parent, 0xf2f2, 0xf30604ef },
+ { 0 }
+};
#define check_lb_state(a1, a2, a3, a4, a5) check_lb_state_dbg(a1, a2, a3, a4, a5, __LINE__)
@@ -14224,6 +14280,7 @@ static void test_listbox_messages(void)
parent = CreateWindowExA(0, "TestParentClass", NULL, WS_OVERLAPPEDWINDOW | WS_VISIBLE,
100, 100, 200, 200, 0, 0, 0, NULL);
+ /* with LBS_HASSTRINGS */
listbox = CreateWindowExA(WS_EX_NOPARENTNOTIFY, "ListBox", NULL,
WS_CHILD | LBS_NOTIFY | LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | WS_VISIBLE,
10, 10, 80, 80, parent, (HMENU)ID_LISTBOX, 0, NULL);
@@ -14304,6 +14361,34 @@ static void test_listbox_messages(void)
log_all_parent_messages--;
+ DestroyWindow(listbox);
+
+ /* with LBS_SORT and without LBS_HASSTRINGS */
+ listbox = CreateWindowExA(WS_EX_NOPARENTNOTIFY, "ListBox", NULL,
+ WS_CHILD | LBS_NOTIFY | LBS_OWNERDRAWVARIABLE | LBS_SORT | WS_VISIBLE,
+ 10, 10, 80, 80, parent, (HMENU)ID_LISTBOX, 0, NULL);
+ listbox_orig_proc = (WNDPROC)SetWindowLongPtrA(listbox, GWLP_WNDPROC, (ULONG_PTR)listbox_hook_proc);
+
+ check_lb_state(listbox, 0, LB_ERR, 0, 0);
+
+ flush_sequence();
+
+ log_all_parent_messages++;
+
+ ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 0");
+ ok(ret == 0, "expected 0, got %ld\n", ret);
+ ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 1");
+todo_wine
+ ok(ret == 1, "expected 1, got %ld\n", ret);
+ ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 2");
+todo_wine
+ ok(ret == 2, "expected 2, got %ld\n", ret);
+
+ ok_sequence(wm_lb_addstring_sort, "LB_ADDSTRING", TRUE);
+ check_lb_state(listbox, 3, LB_ERR, 0, 0);
+
+ log_all_parent_messages--;
+
DestroyWindow(listbox);
DestroyWindow(parent);
}
--
2.16.3
2
1
[PATCH 1/6] user32/tests: Add a test for WM_MEASUREITEM when inserting an item to an owner-drawn listbox.
by Dmitry Timoshkov June 28, 2018
by Dmitry Timoshkov June 28, 2018
June 28, 2018
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
dlls/user32/tests/msg.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 75 insertions(+), 4 deletions(-)
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index a0f2cbeef0..1c3b639aa0 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -3,7 +3,7 @@
*
* Copyright 1999 Ove Kaaven
* Copyright 2003 Dimitrie O. Paun
- * Copyright 2004, 2005 Dmitry Timoshkov
+ * Copyright 2004,2005,2016 Dmitry Timoshkov
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -98,6 +98,22 @@ typedef struct
} u;
} DRAW_ITEM_STRUCT;
+/* encoded MEASUREITEMSTRUCT into a WPARAM */
+typedef struct
+{
+ union
+ {
+ struct
+ {
+ UINT CtlType : 4;
+ UINT CtlID : 4;
+ UINT itemID : 4;
+ UINT wParam : 20;
+ } item;
+ WPARAM wp;
+ } u;
+} MEASURE_ITEM_STRUCT;
+
static BOOL test_DestroyWindow_flag;
static HWINEVENTHOOK hEvent_hook;
static HHOOK hKBD_hook;
@@ -2099,6 +2115,25 @@ static BOOL ignore_message( UINT message )
message == WM_DWMNCRENDERINGCHANGED);
}
+static unsigned hash_Ly_W(const WCHAR *str)
+{
+ unsigned hash = 0;
+
+ for (; *str; str++)
+ hash = hash * 1664525u + (unsigned char)(*str) + 1013904223u;
+
+ return hash;
+}
+
+static unsigned hash_Ly(const char *str)
+{
+ unsigned hash = 0;
+
+ for (; *str; str++)
+ hash = hash * 1664525u + (unsigned char)(*str) + 1013904223u;
+
+ return hash;
+}
#define add_message(msg) add_message_(__LINE__,msg);
static void add_message_(int line, const struct recvd_message *msg)
@@ -2203,6 +2238,26 @@ static void add_message_(int line, const struct recvd_message *msg)
seq->lParam = di.u.lp;
break;
}
+
+ case WM_MEASUREITEM:
+ {
+ MEASURE_ITEM_STRUCT mi;
+ MEASUREITEMSTRUCT *mis = (MEASUREITEMSTRUCT *)msg->lParam;
+
+ sprintf( seq->output, "%s: %p WM_MEASUREITEM: CtlType %#x, CtlID %#x, itemID %#x, itemData %#lx",
+ msg->descr, msg->hwnd, mis->CtlType, mis->CtlID,
+ mis->itemID, mis->itemData);
+
+ mi.u.wp = 0;
+ mi.u.item.CtlType = mis->CtlType;
+ mi.u.item.CtlID = mis->CtlID;
+ mi.u.item.itemID = mis->itemID;
+ mi.u.item.wParam = msg->wParam;
+ seq->wParam = mi.u.wp;
+ seq->lParam = mis->itemData ? hash_Ly_W((const WCHAR *)mis->itemData) : 0;
+ break;
+ }
+
default:
if (msg->message >= 0xc000) return; /* ignore registered messages */
sprintf( seq->output, "%s: %p %04x wp %08lx lp %08lx",
@@ -8989,8 +9044,8 @@ static LRESULT WINAPI ParentMsgCheckProcA(HWND hwnd, UINT message, WPARAM wParam
message == WM_PARENTNOTIFY || message == WM_CANCELMODE ||
message == WM_SETFOCUS || message == WM_KILLFOCUS ||
message == WM_ENABLE || message == WM_ENTERIDLE ||
- message == WM_DRAWITEM || message == WM_COMMAND ||
- message == WM_IME_SETCONTEXT)
+ message == WM_DRAWITEM || message == WM_MEASUREITEM ||
+ message == WM_COMMAND || message == WM_IME_SETCONTEXT)
{
switch (message)
{
@@ -14094,6 +14149,16 @@ static const struct message wm_lb_deletestring_reset[] =
{ WM_DRAWITEM, sent|wparam|parent|optional, ID_LISTBOX },
{ 0 }
};
+static const struct message wm_lb_addstring[] =
+{
+ { LB_ADDSTRING, sent|wparam|lparam, 0, 0xf30604ed },
+ { WM_MEASUREITEM, sent|wparam|lparam|parent, 0xf0f2, 0xf30604ed },
+ { LB_ADDSTRING, sent|wparam|lparam, 0, 0xf30604ee },
+ { WM_MEASUREITEM, sent|wparam|lparam|parent, 0xf1f2, 0xf30604ee },
+ { LB_ADDSTRING, sent|wparam|lparam, 0, 0xf30604ef },
+ { WM_MEASUREITEM, sent|wparam|lparam|parent, 0xf2f2, 0xf30604ef },
+ { 0 }
+};
#define check_lb_state(a1, a2, a3, a4, a5) check_lb_state_dbg(a1, a2, a3, a4, a5, __LINE__)
@@ -14119,7 +14184,10 @@ static LRESULT WINAPI listbox_hook_proc(HWND hwnd, UINT message, WPARAM wp, LPAR
msg.flags = sent|wparam|lparam;
if (defwndproc_counter) msg.flags |= defwinproc;
msg.wParam = wp;
- msg.lParam = lp;
+ if (message == LB_ADDSTRING)
+ msg.lParam = lp ? hash_Ly((const char *)lp) : 0;
+ else
+ msg.lParam = lp;
msg.descr = "listbox";
add_message(&msg);
}
@@ -14163,6 +14231,8 @@ static void test_listbox_messages(void)
check_lb_state(listbox, 0, LB_ERR, 0, 0);
+ flush_sequence();
+
ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 0");
ok(ret == 0, "expected 0, got %ld\n", ret);
ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 1");
@@ -14170,6 +14240,7 @@ static void test_listbox_messages(void)
ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 2");
ok(ret == 2, "expected 2, got %ld\n", ret);
+ ok_sequence(wm_lb_addstring, "LB_ADDSTRING", FALSE);
check_lb_state(listbox, 3, LB_ERR, 0, 0);
flush_sequence();
--
2.16.3
2
1
June 28, 2018
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
dlls/user32/listbox.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/dlls/user32/listbox.c b/dlls/user32/listbox.c
index 490033902c..9caccf6097 100644
--- a/dlls/user32/listbox.c
+++ b/dlls/user32/listbox.c
@@ -828,10 +828,11 @@ static INT LISTBOX_FindStringPos( LB_DESCR *descr, LPCWSTR str, BOOL exact )
{
INT index, min, max, res;
- if (!(descr->style & LBS_SORT)) return -1; /* Add it at the end */
+ if (!descr->nb_items || !(descr->style & LBS_SORT)) return -1; /* Add it at the end */
+
min = 0;
- max = descr->nb_items;
- while (min != max)
+ max = descr->nb_items - 1;
+ while (min <= max)
{
index = (min + max) / 2;
if (HAS_STRINGS(descr))
@@ -854,10 +855,10 @@ static INT LISTBOX_FindStringPos( LB_DESCR *descr, LPCWSTR str, BOOL exact )
res = SendMessageW( descr->owner, WM_COMPAREITEM, id, (LPARAM)&cis );
}
if (!res) return index;
- if (res > 0) max = index;
+ if (res > 0) max = index - 1;
else min = index + 1;
}
- return exact ? -1 : max;
+ return exact ? -1 : min;
}
--
2.16.3
1
0
[PATCH 3/6] user32/tests: Add some message tests for not an owner-drawn listbox.
by Dmitry Timoshkov June 28, 2018
by Dmitry Timoshkov June 28, 2018
June 28, 2018
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
dlls/user32/tests/msg.c | 69 +++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 64 insertions(+), 5 deletions(-)
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index 0df9687ae2..5a5d5ed5fe 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -14193,6 +14193,13 @@ static const struct message wm_lb_deletestring_reset[] =
{ 0 }
};
static const struct message wm_lb_addstring[] =
+{
+ { LB_ADDSTRING, sent|wparam|lparam, 0, 0xf30604ef },
+ { LB_ADDSTRING, sent|wparam|lparam, 0, 0xf30604ed },
+ { LB_ADDSTRING, sent|wparam|lparam, 0, 0xf30604ee },
+ { 0 }
+};
+static const struct message wm_lb_addstring_ownerdraw[] =
{
{ LB_ADDSTRING, sent|wparam|lparam, 0, 0xf30604ed },
{ WM_MEASUREITEM, sent|wparam|lparam|parent, 0xf0f2, 0xf30604ed },
@@ -14202,7 +14209,7 @@ static const struct message wm_lb_addstring[] =
{ WM_MEASUREITEM, sent|wparam|lparam|parent, 0xf2f2, 0xf30604ef },
{ 0 }
};
-static const struct message wm_lb_addstring_sort[] =
+static const struct message wm_lb_addstring_sort_ownerdraw[] =
{
{ LB_ADDSTRING, sent|wparam|lparam, 0, 0xf30604ed },
{ WM_MEASUREITEM, sent|wparam|lparam|parent, 0xf0f2, 0xf30604ed },
@@ -14290,6 +14297,8 @@ static void test_listbox_messages(void)
flush_sequence();
+ log_all_parent_messages++;
+
ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 0");
ok(ret == 0, "expected 0, got %ld\n", ret);
ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 1");
@@ -14297,13 +14306,11 @@ static void test_listbox_messages(void)
ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 2");
ok(ret == 2, "expected 2, got %ld\n", ret);
- ok_sequence(wm_lb_addstring, "LB_ADDSTRING", FALSE);
+ ok_sequence(wm_lb_addstring_ownerdraw, "LB_ADDSTRING", FALSE);
check_lb_state(listbox, 3, LB_ERR, 0, 0);
flush_sequence();
- log_all_parent_messages++;
-
trace("selecting item 0\n");
ret = SendMessageA(listbox, LB_SETCURSEL, 0, 0);
ok(ret == 0, "expected 0, got %ld\n", ret);
@@ -14384,7 +14391,59 @@ todo_wine
todo_wine
ok(ret == 2, "expected 2, got %ld\n", ret);
- ok_sequence(wm_lb_addstring_sort, "LB_ADDSTRING", TRUE);
+ ok_sequence(wm_lb_addstring_sort_ownerdraw, "LB_ADDSTRING", TRUE);
+ check_lb_state(listbox, 3, LB_ERR, 0, 0);
+
+ log_all_parent_messages--;
+
+ DestroyWindow(listbox);
+
+ /* with LBS_HASSTRINGS */
+ listbox = CreateWindowExA(WS_EX_NOPARENTNOTIFY, "ListBox", NULL,
+ WS_CHILD | LBS_NOTIFY | LBS_HASSTRINGS | WS_VISIBLE,
+ 10, 10, 80, 80, parent, (HMENU)ID_LISTBOX, 0, NULL);
+ listbox_orig_proc = (WNDPROC)SetWindowLongPtrA(listbox, GWLP_WNDPROC, (ULONG_PTR)listbox_hook_proc);
+
+ check_lb_state(listbox, 0, LB_ERR, 0, 0);
+
+ flush_sequence();
+
+ log_all_parent_messages++;
+
+ ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 2");
+ ok(ret == 0, "expected 0, got %ld\n", ret);
+ ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 0");
+ ok(ret == 1, "expected 1, got %ld\n", ret);
+ ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 1");
+ ok(ret == 2, "expected 2, got %ld\n", ret);
+
+ ok_sequence(wm_lb_addstring, "LB_ADDSTRING", FALSE);
+ check_lb_state(listbox, 3, LB_ERR, 0, 0);
+
+ log_all_parent_messages--;
+
+ DestroyWindow(listbox);
+
+ /* with LBS_HASSTRINGS and LBS_SORT */
+ listbox = CreateWindowExA(WS_EX_NOPARENTNOTIFY, "ListBox", NULL,
+ WS_CHILD | LBS_NOTIFY | LBS_HASSTRINGS | LBS_SORT | WS_VISIBLE,
+ 10, 10, 80, 80, parent, (HMENU)ID_LISTBOX, 0, NULL);
+ listbox_orig_proc = (WNDPROC)SetWindowLongPtrA(listbox, GWLP_WNDPROC, (ULONG_PTR)listbox_hook_proc);
+
+ check_lb_state(listbox, 0, LB_ERR, 0, 0);
+
+ flush_sequence();
+
+ log_all_parent_messages++;
+
+ ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 2");
+ ok(ret == 0, "expected 0, got %ld\n", ret);
+ ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 0");
+ ok(ret == 0, "expected 0, got %ld\n", ret);
+ ret = SendMessageA(listbox, LB_ADDSTRING, 0, (LPARAM)"item 1");
+ ok(ret == 1, "expected 1, got %ld\n", ret);
+
+ ok_sequence(wm_lb_addstring, "LB_ADDSTRING", FALSE);
check_lb_state(listbox, 3, LB_ERR, 0, 0);
log_all_parent_messages--;
--
2.16.3
1
0
[PATCH 1/2] msctf/tests: Set requestedExecutionLevel to asInvoker to prevent virtualization.
by Zebediah Figura June 28, 2018
by Zebediah Figura June 28, 2018
June 28, 2018
Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com>
---
dlls/msctf/tests/Makefile.in | 3 +++
dlls/msctf/tests/msctf.manifest | 16 ++++++++++++++++
dlls/msctf/tests/msctf.rc | 4 ++++
3 files changed, 23 insertions(+)
create mode 100644 dlls/msctf/tests/msctf.manifest
create mode 100644 dlls/msctf/tests/msctf.rc
diff --git a/dlls/msctf/tests/Makefile.in b/dlls/msctf/tests/Makefile.in
index b3df05c..2cb119a 100644
--- a/dlls/msctf/tests/Makefile.in
+++ b/dlls/msctf/tests/Makefile.in
@@ -3,3 +3,6 @@ IMPORTS = ole32 user32
C_SRCS = \
inputprocessor.c
+
+RC_SRCS = \
+ msctf.rc
diff --git a/dlls/msctf/tests/msctf.manifest b/dlls/msctf/tests/msctf.manifest
new file mode 100644
index 0000000..fc23c29
--- /dev/null
+++ b/dlls/msctf/tests/msctf.manifest
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+ <assemblyIdentity
+ type="win32"
+ name="Wine.msctf.Test"
+ version="1.0.0.0"
+ processorArchitecture="*"
+ />
+ <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+ <security>
+ <requestedPrivileges>
+ <requestedExecutionLevel level="asInvoker" />
+ </requestedPrivileges>
+ </security>
+ </trustInfo>
+</assembly>
diff --git a/dlls/msctf/tests/msctf.rc b/dlls/msctf/tests/msctf.rc
new file mode 100644
index 0000000..51b4021
--- /dev/null
+++ b/dlls/msctf/tests/msctf.rc
@@ -0,0 +1,4 @@
+#include "winuser.h"
+
+/* @makedep: msctf.manifest */
+1 RT_MANIFEST msctf.manifest
--
2.7.4
2
2
[PATCH 1/2] odbccp32/tests: Skip SQLGetInstalledDrivers() test if limited.
by Zebediah Figura June 28, 2018
by Zebediah Figura June 28, 2018
June 28, 2018
Fixes https://bugs.winehq.org/show_bug.cgi?id=45389
Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com>
---
dlls/odbccp32/tests/misc.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/dlls/odbccp32/tests/misc.c b/dlls/odbccp32/tests/misc.c
index c12ff49..8a16a9e 100644
--- a/dlls/odbccp32/tests/misc.c
+++ b/dlls/odbccp32/tests/misc.c
@@ -618,11 +618,19 @@ static void test_SQLGetInstalledDrivers(void)
{
char buffer[1000], *p;
WORD written, len;
+ BOOL ret, sql_ret;
+ DWORD error_code;
int found = 0;
- BOOL ret;
- SQLInstallDriverEx("Wine test\0Driver=test.dll\0\0", NULL, buffer,
- sizeof(buffer), &written, ODBC_INSTALL_COMPLETE, NULL);
+ ret = SQLInstallDriverEx("Wine test\0Driver=test.dll\0\0", NULL, buffer,
+ sizeof(buffer), &written, ODBC_INSTALL_COMPLETE, NULL);
+ ok(ret, "SQLInstallDriverEx failed: %d\n", ret);
+ sql_ret = SQLInstallerErrorW(1, &error_code, NULL, 0, NULL);
+ if (sql_ret && error_code == ODBC_ERROR_WRITING_SYSINFO_FAILED)
+ {
+ skip("not enough privileges\n");
+ return;
+ }
ret = SQLGetInstalledDrivers(NULL, sizeof(buffer), &written);
ok(!ret, "got %d\n", ret);
--
2.7.4
1
1
[PATCH 1/2] devenum/tests: DMORegister() returns E_FAIL if unable to access the registry.
by Zebediah Figura June 28, 2018
by Zebediah Figura June 28, 2018
June 28, 2018
Fixes https://bugs.winehq.org/show_bug.cgi?id=45390
Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com>
---
dlls/devenum/tests/devenum.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/devenum/tests/devenum.c b/dlls/devenum/tests/devenum.c
index 6d4ce2d..bc3d105 100644
--- a/dlls/devenum/tests/devenum.c
+++ b/dlls/devenum/tests/devenum.c
@@ -521,7 +521,7 @@ static void test_dmo(void)
ok(hr == E_ACCESSDENIED, "Write failed: %#x\n", hr);
hr = DMORegister(name, &CLSID_TestFilter, &CLSID_AudioRendererCategory, 0, 0, NULL, 0, NULL);
- if (hr != E_ACCESSDENIED)
+ if (hr != E_FAIL)
{
ok(hr == S_OK, "got %#x\n", hr);
--
2.7.4
1
1
June 28, 2018
Signed-off-by: Lucian Poston <lucianposton(a)pm.me>
---
dlls/dwrite/tests/layout.c | 278 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 278 insertions(+)
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index 4198b8a1b1..7542cad8d7 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -4489,6 +4489,7 @@ static void test_SetWordWrapping(void)
/* Collection dedicated to fallback testing */
static const WCHAR g_blahfontW[] = {'B','l','a','h',0};
+static const WCHAR g_fontNotInCollectionW[] = {'n','o','t','B','l','a','h',0};
static HRESULT WINAPI fontcollection_QI(IDWriteFontCollection *iface, REFIID riid, void **obj)
{
if (IsEqualIID(riid, &IID_IDWriteFontCollection) || IsEqualIID(riid, &IID_IUnknown)) {
@@ -4548,6 +4549,9 @@ static HRESULT WINAPI fontcollection_FindFamilyName(IDWriteFontCollection *iface
*index = 123456;
*exists = TRUE;
return S_OK;
+ } else if (!lstrcmpW(name, g_fontNotInCollectionW)) {
+ *exists = FALSE;
+ return S_OK;
}
ok(0, "unexpected call, name %s\n", wine_dbgstr_w(name));
return E_NOTIMPL;
@@ -5568,6 +5572,279 @@ static void test_GetOverhangMetrics(void)
IDWriteFactory_Release(factory);
}
+static void test_GetMetrics_with_custom_fontcollection(void)
+{
+ static const WCHAR emptystringW[] = {0};
+ static const WCHAR mappedW[] = {'a','b','c','d',0};
+ static const WCHAR notmappedW[] = {'a',0xffff,'b',0}; // u+ffff = not a unicode character
+ DWRITE_CLUSTER_METRICS clusters[4];
+ DWRITE_TEXT_METRICS metrics;
+ IDWriteTextFormat *format;
+ IDWriteTextLayout *layout;
+ IDWriteFactory *factory;
+ UINT32 count, i;
+ FLOAT width;
+ HRESULT hr;
+
+ factory = create_factory();
+
+ /* font is in font collection */
+ hr = IDWriteFactory_CreateTextFormat(factory, g_blahfontW, &fallbackcollection,
+ DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL,
+ DWRITE_FONT_STRETCH_NORMAL, 10.0, enusW, &format);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ /* text is mapped by fontfallback */
+ hr = IDWriteFactory_CreateTextLayout(factory, mappedW, 4, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(count == 4, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ /* text is not mapped by fontfallback */
+ hr = IDWriteFactory_CreateTextLayout(factory, notmappedW, 4, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(count == 4, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ /* empty string */
+ hr = IDWriteFactory_CreateTextLayout(factory, emptystringW, 4, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(count == 4, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ /* zero-length empty string */
+ hr = IDWriteFactory_CreateTextLayout(factory, emptystringW, 0, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(count == 0, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ IDWriteTextFormat_Release(format);
+
+ /* font not in font collection */
+ hr = IDWriteFactory_CreateTextFormat(factory, g_fontNotInCollectionW, &fallbackcollection,
+ DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL,
+ DWRITE_FONT_STRETCH_NORMAL, 10.0, enusW, &format);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ /* text is mapped by fontfallback */
+ hr = IDWriteFactory_CreateTextLayout(factory, mappedW, 4, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine
+ ok(count == 4, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ todo_wine
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ todo_wine
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ todo_wine
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ todo_wine
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ todo_wine
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ todo_wine
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ todo_wine
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ todo_wine
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ /* text is not mapped by fontfallback */
+ hr = IDWriteFactory_CreateTextLayout(factory, notmappedW, 4, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine
+ ok(count == 4, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ todo_wine
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ todo_wine
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ todo_wine
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ todo_wine
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ todo_wine
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ todo_wine
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ todo_wine
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ todo_wine
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ /* empty string */
+ hr = IDWriteFactory_CreateTextLayout(factory, emptystringW, 4, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine
+ ok(count == 4, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ todo_wine
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ todo_wine
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ todo_wine
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ todo_wine
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ todo_wine
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ todo_wine
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ todo_wine
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ todo_wine
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ /* zero-length empty string */
+ hr = IDWriteFactory_CreateTextLayout(factory, emptystringW, 0, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(count == 0, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ todo_wine
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ todo_wine
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ todo_wine
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ todo_wine
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ todo_wine
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ todo_wine
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ todo_wine
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ todo_wine
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ IDWriteTextFormat_Release(format);
+
+ IDWriteFactory_Release(factory);
+}
+
START_TEST(layout)
{
IDWriteFactory *factory;
@@ -5601,6 +5878,7 @@ START_TEST(layout)
test_SetFontStretch();
test_SetStrikethrough();
test_GetMetrics();
+ test_GetMetrics_with_custom_fontcollection();
test_SetFlowDirection();
test_SetDrawingEffect();
test_GetLineMetrics();
--
2.16.4
1
0
June 28, 2018
Signed-off-by: Lucian Poston <lucianposton(a)pm.me>
---
dlls/dwrite/tests/layout.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index 652f6b78ac..4198b8a1b1 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -30,6 +30,7 @@
#include "wine/test.h"
static const WCHAR tahomaW[] = {'T','a','h','o','m','a',0};
+static const WCHAR nonExistentFontW[] = {'B','l','a','h','!',0};
static const WCHAR enusW[] = {'e','n','-','u','s',0};
struct testanalysissink
@@ -3292,6 +3293,51 @@ todo_wine
ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
IDWriteTextLayout_Release(layout);
+ IDWriteTextFormat_Release(format);
+
+ /* nonexistent font */
+ hr = IDWriteFactory_CreateTextFormat(factory, nonExistentFontW, NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL,
+ DWRITE_FONT_STRETCH_NORMAL, 10.0, enusW, &format);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ hr = IDWriteFactory_CreateTextLayout(factory, strW, 4, format, 500.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ count = 0;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+todo_wine
+ ok(count == 4, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+todo_wine
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+todo_wine
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+todo_wine
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+todo_wine
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+todo_wine
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+todo_wine
+ ok(metrics.layoutWidth == 500.0, "got %.2f\n", metrics.layoutWidth);
+todo_wine
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+todo_wine
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+todo_wine
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+
+ IDWriteTextLayout_Release(layout);
+
IDWriteTextFormat_Release(format);
IDWriteFactory_Release(factory);
}
--
2.16.4
1
0
June 28, 2018
Signed-off-by: Lucian Poston <lucianposton(a)pm.me>
---
dlls/dwrite/tests/layout.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index c2dd273c6c..ac36aff5b5 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -32,6 +32,7 @@
#define ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0]))
static const WCHAR tahomaW[] = {'T','a','h','o','m','a',0};
+static const WCHAR nonExistentFontW[] = {'B','l','a','h','!',0};
static const WCHAR enusW[] = {'e','n','-','u','s',0};
struct testanalysissink
@@ -3294,6 +3295,51 @@ todo_wine
ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
IDWriteTextLayout_Release(layout);
+ IDWriteTextFormat_Release(format);
+
+ /* nonexistent font */
+ hr = IDWriteFactory_CreateTextFormat(factory, nonExistentFontW, NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL,
+ DWRITE_FONT_STRETCH_NORMAL, 10.0, enusW, &format);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ hr = IDWriteFactory_CreateTextLayout(factory, strW, 4, format, 500.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ count = 0;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+todo_wine
+ ok(count == 4, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+todo_wine
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+todo_wine
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+todo_wine
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+todo_wine
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+todo_wine
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+todo_wine
+ ok(metrics.layoutWidth == 500.0, "got %.2f\n", metrics.layoutWidth);
+todo_wine
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+todo_wine
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+todo_wine
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+
+ IDWriteTextLayout_Release(layout);
+
IDWriteTextFormat_Release(format);
IDWriteFactory_Release(factory);
}
--
2.16.4
2
2
June 28, 2018
Signed-off-by: Lucian Poston <lucianposton(a)pm.me>
---
dlls/dwrite/tests/layout.c | 278 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 278 insertions(+)
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index ac36aff5b5..2b665fd74e 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -4491,6 +4491,7 @@ static void test_SetWordWrapping(void)
/* Collection dedicated to fallback testing */
static const WCHAR g_blahfontW[] = {'B','l','a','h',0};
+static const WCHAR g_fontNotInCollectionW[] = {'n','o','t','B','l','a','h',0};
static HRESULT WINAPI fontcollection_QI(IDWriteFontCollection *iface, REFIID riid, void **obj)
{
if (IsEqualIID(riid, &IID_IDWriteFontCollection) || IsEqualIID(riid, &IID_IUnknown)) {
@@ -4550,6 +4551,9 @@ static HRESULT WINAPI fontcollection_FindFamilyName(IDWriteFontCollection *iface
*index = 123456;
*exists = TRUE;
return S_OK;
+ } else if (!lstrcmpW(name, g_fontNotInCollectionW)) {
+ *exists = FALSE;
+ return S_OK;
}
ok(0, "unexpected call, name %s\n", wine_dbgstr_w(name));
return E_NOTIMPL;
@@ -5570,6 +5574,279 @@ static void test_GetOverhangMetrics(void)
IDWriteFactory_Release(factory);
}
+static void test_GetMetrics_with_custom_fontcollection(void)
+{
+ static const WCHAR emptystringW[] = {0};
+ static const WCHAR mappedW[] = {'a','b','c','d',0};
+ static const WCHAR notmappedW[] = {'a',0xffff,'b',0}; // u+ffff = not a unicode character
+ DWRITE_CLUSTER_METRICS clusters[4];
+ DWRITE_TEXT_METRICS metrics;
+ IDWriteTextFormat *format;
+ IDWriteTextLayout *layout;
+ IDWriteFactory *factory;
+ UINT32 count, i;
+ FLOAT width;
+ HRESULT hr;
+
+ factory = create_factory();
+
+ /* font is in font collection */
+ hr = IDWriteFactory_CreateTextFormat(factory, g_blahfontW, &fallbackcollection,
+ DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL,
+ DWRITE_FONT_STRETCH_NORMAL, 10.0, enusW, &format);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ /* text is mapped by fontfallback */
+ hr = IDWriteFactory_CreateTextLayout(factory, mappedW, 4, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(count == 4, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ /* text is not mapped by fontfallback */
+ hr = IDWriteFactory_CreateTextLayout(factory, notmappedW, 4, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(count == 4, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ /* empty string */
+ hr = IDWriteFactory_CreateTextLayout(factory, emptystringW, 4, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(count == 4, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ /* zero-length empty string */
+ hr = IDWriteFactory_CreateTextLayout(factory, emptystringW, 0, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(count == 0, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ IDWriteTextFormat_Release(format);
+
+ /* font not in font collection */
+ hr = IDWriteFactory_CreateTextFormat(factory, g_fontNotInCollectionW, &fallbackcollection,
+ DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL,
+ DWRITE_FONT_STRETCH_NORMAL, 10.0, enusW, &format);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ /* text is mapped by fontfallback */
+ hr = IDWriteFactory_CreateTextLayout(factory, mappedW, 4, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine
+ ok(count == 4, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ todo_wine
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ todo_wine
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ todo_wine
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ todo_wine
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ todo_wine
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ todo_wine
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ todo_wine
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ todo_wine
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ /* text is not mapped by fontfallback */
+ hr = IDWriteFactory_CreateTextLayout(factory, notmappedW, 4, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine
+ ok(count == 4, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ todo_wine
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ todo_wine
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ todo_wine
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ todo_wine
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ todo_wine
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ todo_wine
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ todo_wine
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ todo_wine
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ /* empty string */
+ hr = IDWriteFactory_CreateTextLayout(factory, emptystringW, 4, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine
+ ok(count == 4, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ todo_wine
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ todo_wine
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ todo_wine
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ todo_wine
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ todo_wine
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ todo_wine
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ todo_wine
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ todo_wine
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ /* zero-length empty string */
+ hr = IDWriteFactory_CreateTextLayout(factory, emptystringW, 0, format, 1000.0, 1000.0, &layout);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ count = 9999;
+ hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(count == 0, "got %u\n", count);
+ for (i = 0, width = 0.0; i < count; i++)
+ width += clusters[i].width;
+ memset(&metrics, 0xcc, sizeof(metrics));
+ hr = IDWriteTextLayout_GetMetrics(layout, &metrics);
+ todo_wine
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine
+ ok(metrics.left == 0.0, "got %.2f\n", metrics.left);
+ todo_wine
+ ok(metrics.top == 0.0, "got %.2f\n", metrics.top);
+ todo_wine
+ ok(metrics.width == width, "got %.2f, expected %.2f\n", metrics.width, width);
+ todo_wine
+ ok(metrics.widthIncludingTrailingWhitespace == width, "got %.2f, expected %.2f\n",
+ metrics.widthIncludingTrailingWhitespace, width);
+ todo_wine
+ ok(metrics.height > 0.0, "got %.2f\n", metrics.height);
+ todo_wine
+ ok(metrics.layoutWidth == 1000.0, "got %.2f\n", metrics.layoutWidth);
+ todo_wine
+ ok(metrics.layoutHeight == 1000.0, "got %.2f\n", metrics.layoutHeight);
+ todo_wine
+ ok(metrics.maxBidiReorderingDepth == 1, "got %u\n", metrics.maxBidiReorderingDepth);
+ todo_wine
+ ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount);
+ IDWriteTextLayout_Release(layout);
+
+ IDWriteTextFormat_Release(format);
+
+ IDWriteFactory_Release(factory);
+}
+
START_TEST(layout)
{
IDWriteFactory *factory;
@@ -5603,6 +5880,7 @@ START_TEST(layout)
test_SetFontStretch();
test_SetStrikethrough();
test_GetMetrics();
+ test_GetMetrics_with_custom_fontcollection();
test_SetFlowDirection();
test_SetDrawingEffect();
test_GetLineMetrics();
--
2.16.4
2
1
Signed-off-by: Józef Kucia <jkucia(a)codeweavers.com>
---
include/d3d12.idl | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/d3d12.idl b/include/d3d12.idl
index 69220e674cd7..43e9c2dca3bb 100644
--- a/include/d3d12.idl
+++ b/include/d3d12.idl
@@ -944,7 +944,7 @@ typedef struct D3D12_TEXCUBE_ARRAY_SRV
{
UINT MostDetailedMip;
UINT MipLevels;
- UINT First2DArraySlice;
+ UINT First2DArrayFace;
UINT NumCubes;
FLOAT ResourceMinLODClamp;
} D3D12_TEXCUBE_ARRAY_SRV;
@@ -2172,7 +2172,7 @@ interface ID3D12RootSignatureDeserializer : IUnknown
ID3DBlob **blob, ID3DBlob **error_blob);
typedef HRESULT (__stdcall *PFN_D3D12_CREATE_DEVICE)(IUnknown *adapter,
- D3D_FEATURE_LEVEL minmum_feature_level, REFIID iid, void **device);
+ D3D_FEATURE_LEVEL minimum_feature_level, REFIID iid, void **device);
[local] HRESULT __stdcall D3D12CreateDevice(IUnknown *adapter,
D3D_FEATURE_LEVEL minimum_feature_level, REFIID iid, void **device);
--
2.16.4
2
1
June 27, 2018
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
dlls/kernel32/tests/actctx.c | 30 +++++++--------
dlls/kernel32/tests/atom.c | 4 +-
dlls/kernel32/tests/codepage.c | 64 +++++++++++++++----------------
dlls/kernel32/tests/comm.c | 4 +-
dlls/kernel32/tests/console.c | 68 ++++++++++++++++-----------------
dlls/kernel32/tests/file.c | 38 +++++++++----------
dlls/kernel32/tests/heap.c | 2 +-
dlls/kernel32/tests/loader.c | 18 ++++-----
dlls/kernel32/tests/module.c | 13 ++++---
dlls/kernel32/tests/path.c | 86 +++++++++++++++++++++---------------------
dlls/kernel32/tests/pipe.c | 5 +--
dlls/kernel32/tests/process.c | 10 ++---
dlls/kernel32/tests/profile.c | 12 +++---
dlls/kernel32/tests/resource.c | 2 +-
dlls/kernel32/tests/thread.c | 2 +-
dlls/kernel32/tests/version.c | 2 +-
dlls/kernel32/tests/virtual.c | 20 +++++-----
dlls/kernel32/tests/volume.c | 4 +-
18 files changed, 191 insertions(+), 193 deletions(-)
diff --git a/dlls/kernel32/tests/actctx.c b/dlls/kernel32/tests/actctx.c
index 8c9ac79db3..96d9b8cbb6 100644
--- a/dlls/kernel32/tests/actctx.c
+++ b/dlls/kernel32/tests/actctx.c
@@ -533,7 +533,7 @@ static int strcmp_aw(LPCWSTR strw, const char *stra)
WCHAR buf[1024];
if (!stra) return 1;
- MultiByteToWideChar(CP_ACP, 0, stra, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, stra, -1, buf, ARRAY_SIZE(buf));
return lstrcmpW(strw, buf);
}
@@ -550,7 +550,7 @@ static BOOL create_manifest_file(const char *filename, const char *manifest, int
WCHAR path[MAX_PATH];
MultiByteToWideChar( CP_ACP, 0, filename, -1, path, MAX_PATH );
- GetFullPathNameW(path, sizeof(manifest_path)/sizeof(WCHAR), manifest_path, NULL);
+ GetFullPathNameW(path, ARRAY_SIZE(manifest_path), manifest_path, NULL);
if (manifest_len == -1)
manifest_len = strlen(manifest);
@@ -566,7 +566,7 @@ static BOOL create_manifest_file(const char *filename, const char *manifest, int
if (depmanifest)
{
MultiByteToWideChar( CP_ACP, 0, depfile, -1, path, MAX_PATH );
- GetFullPathNameW(path, sizeof(depmanifest_path)/sizeof(WCHAR), depmanifest_path, NULL);
+ GetFullPathNameW(path, ARRAY_SIZE(depmanifest_path), depmanifest_path, NULL);
file = CreateFileW(path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL);
ok(file != INVALID_HANDLE_VALUE, "CreateFile failed: %u\n", GetLastError());
@@ -2558,7 +2558,7 @@ static void init_paths(void)
static const WCHAR backslash[] = {'\\',0};
static const WCHAR subdir[] = {'T','e','s','t','S','u','b','d','i','r','\\',0};
- GetModuleFileNameW(NULL, exe_path, sizeof(exe_path)/sizeof(WCHAR));
+ GetModuleFileNameW(NULL, exe_path, ARRAY_SIZE(exe_path));
lstrcpyW(app_dir, exe_path);
for(ptr=app_dir+lstrlenW(app_dir); *ptr != '\\' && *ptr != '/'; ptr--);
ptr[1] = 0;
@@ -2570,7 +2570,7 @@ static void init_paths(void)
lstrcpyW(work_dir_subdir, work_dir);
lstrcatW(work_dir_subdir, subdir);
- GetModuleFileNameW(NULL, app_manifest_path, sizeof(app_manifest_path)/sizeof(WCHAR));
+ GetModuleFileNameW(NULL, app_manifest_path, ARRAY_SIZE(app_manifest_path));
lstrcpyW(app_manifest_path+lstrlenW(app_manifest_path), dot_manifest);
}
@@ -2580,7 +2580,7 @@ static void write_manifest(const char *filename, const char *manifest)
DWORD size;
CHAR path[MAX_PATH];
- GetTempPathA(sizeof(path)/sizeof(CHAR), path);
+ GetTempPathA(ARRAY_SIZE(path), path);
strcat(path, filename);
file = CreateFileA(path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
@@ -2593,7 +2593,7 @@ static void delete_manifest_file(const char *filename)
{
CHAR path[MAX_PATH];
- GetTempPathA(sizeof(path)/sizeof(CHAR), path);
+ GetTempPathA(ARRAY_SIZE(path), path);
strcat(path, filename);
DeleteFileA(path);
}
@@ -2604,7 +2604,7 @@ static void test_CreateActCtx(void)
ACTCTXA actctx;
HANDLE handle;
- GetTempPathA(sizeof(path)/sizeof(CHAR), path);
+ GetTempPathA(ARRAY_SIZE(path), path);
strcat(path, "main_wndcls.manifest");
write_manifest("testdep1.manifest", manifest_wndcls1);
@@ -2621,7 +2621,7 @@ static void test_CreateActCtx(void)
pReleaseActCtx(handle);
/* with specified directory, that doesn't contain dependent assembly */
- GetWindowsDirectoryA(dir, sizeof(dir)/sizeof(CHAR));
+ GetWindowsDirectoryA(dir, ARRAY_SIZE(dir));
memset(&actctx, 0, sizeof(ACTCTXA));
actctx.cbSize = sizeof(ACTCTXA);
@@ -2667,7 +2667,7 @@ todo_wine
/* load manifest from lpAssemblyDirectory directory */
write_manifest("testdir.manifest", manifest1);
- GetTempPathA(sizeof(path)/sizeof(path[0]), path);
+ GetTempPathA(ARRAY_SIZE(path), path);
SetCurrentDirectoryA(path);
strcat(path, "assembly_dir");
strcpy(dir, path);
@@ -3048,14 +3048,14 @@ static void test_settings(void)
ret = pQueryActCtxSettingsW( 0, handle, namespace2005W, dpiAwareW, buffer, 80, &size );
ok( ret, "QueryActCtxSettingsW failed err %u\n", GetLastError() );
ok( !lstrcmpW( buffer, trueW ), "got %s\n", wine_dbgstr_w(buffer) );
- ok( size == sizeof(trueW)/sizeof(WCHAR), "wrong len %lu\n", size );
+ ok( size == ARRAY_SIZE(trueW), "wrong len %lu\n", size );
SetLastError( 0xdeadbeef );
size = 0xdead;
memset( buffer, 0xcc, sizeof(buffer) );
ret = pQueryActCtxSettingsW( 0, handle, namespace2005W, dpiAwareW, buffer, lstrlenW(trueW) + 1, &size );
ok( ret, "QueryActCtxSettingsW failed err %u\n", GetLastError() );
ok( !lstrcmpW( buffer, trueW ), "got %s\n", wine_dbgstr_w(buffer) );
- ok( size == sizeof(trueW)/sizeof(WCHAR), "wrong len %lu\n", size );
+ ok( size == ARRAY_SIZE(trueW), "wrong len %lu\n", size );
SetLastError( 0xdeadbeef );
size = 0xdead;
memset( buffer, 0xcc, sizeof(buffer) );
@@ -3087,7 +3087,7 @@ static void test_settings(void)
if (ret)
{
ok( !lstrcmpW( buffer, trueW ), "got %s\n", wine_dbgstr_w(buffer) );
- ok( size == sizeof(trueW)/sizeof(WCHAR), "wrong len %lu\n", size );
+ ok( size == ARRAY_SIZE(trueW), "wrong len %lu\n", size );
}
else ok( buffer[0] == 0xcccc, "got %s\n", wine_dbgstr_w(buffer) );
SetLastError( 0xdeadbeef );
@@ -3096,7 +3096,7 @@ static void test_settings(void)
ret = pQueryActCtxSettingsW( 0, handle, NULL, dpiAwareW, buffer, lstrlenW(trueW), &size );
ok( ret, "QueryActCtxSettingsW failed err %u\n", GetLastError() );
ok( !lstrcmpW( buffer, trueW ), "got %s\n", wine_dbgstr_w(buffer) );
- ok( size == sizeof(trueW)/sizeof(WCHAR), "wrong len %lu\n", size );
+ ok( size == ARRAY_SIZE(trueW), "wrong len %lu\n", size );
SetLastError( 0xdeadbeef );
size = 0xdead;
memset( buffer, 0xcc, sizeof(buffer) );
@@ -3104,7 +3104,7 @@ static void test_settings(void)
ok( !ret, "QueryActCtxSettingsW failed err %u\n", GetLastError() );
ok( GetLastError() == ERROR_INSUFFICIENT_BUFFER, "wrong error %u\n", GetLastError() );
ok( buffer[0] == 0xcccc, "got %s\n", wine_dbgstr_w(buffer) );
- ok( size == sizeof(trueW)/sizeof(WCHAR), "wrong len %lu\n", size );
+ ok( size == ARRAY_SIZE(trueW), "wrong len %lu\n", size );
pReleaseActCtx(handle);
create_manifest_file( "manifest_settings2.manifest", settings_manifest2, -1, NULL, NULL );
diff --git a/dlls/kernel32/tests/atom.c b/dlls/kernel32/tests/atom.c
index 0c1740869a..ad9e91ba25 100644
--- a/dlls/kernel32/tests/atom.c
+++ b/dlls/kernel32/tests/atom.c
@@ -276,7 +276,7 @@ static void test_get_atom_name(void)
do_initW(inW, "abcdefghij", 255);
atom = GlobalAddAtomW(inW);
ok(atom, "couldn't add atom for %s\n", in);
- len = GlobalGetAtomNameW(atom, outW, sizeof(outW)/sizeof(outW[0]));
+ len = GlobalGetAtomNameW(atom, outW, ARRAY_SIZE(outW));
ok(len == 255, "length mismatch (%u instead of 255)\n", len);
for (i = 0; i < 255; i++)
{
@@ -537,7 +537,7 @@ static void test_local_get_atom_name(void)
do_initW(inW, "abcdefghij", 255);
atom = AddAtomW(inW);
ok(atom, "couldn't add atom for %s\n", in);
- len = GetAtomNameW(atom, outW, sizeof(outW)/sizeof(outW[0]));
+ len = GetAtomNameW(atom, outW, ARRAY_SIZE(outW));
ok(len == 255, "length mismatch (%u instead of 255)\n", len);
for (i = 0; i < 255; i++)
{
diff --git a/dlls/kernel32/tests/codepage.c b/dlls/kernel32/tests/codepage.c
index 7389d93276..b15a3a10a7 100644
--- a/dlls/kernel32/tests/codepage.c
+++ b/dlls/kernel32/tests/codepage.c
@@ -205,7 +205,7 @@ static void test_other_invalid_parameters(void)
char c_string[] = "Hello World";
size_t c_string_len = sizeof(c_string);
WCHAR w_string[] = {'H','e','l','l','o',' ','W','o','r','l','d',0};
- size_t w_string_len = sizeof(w_string) / sizeof(WCHAR);
+ size_t w_string_len = ARRAY_SIZE(w_string);
BOOL used;
INT len;
@@ -683,7 +683,7 @@ static void test_utf7_encoding(void)
i, expected_len, expected_len, output[expected_len]);
}
- for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(tests); i++)
{
memset(output, '#', sizeof(output) - 1);
output[sizeof(output) - 1] = 0;
@@ -746,12 +746,12 @@ static void test_utf7_decoding(void)
{
/* tests string conversion with srclen=-1 */
{
- "+T2BZfQ-", -1, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "+T2BZfQ-", -1, output, ARRAY_SIZE(output) - 1,
{0x4F60,0x597D,0}, 3, 3
},
/* tests string conversion with srclen=-2 */
{
- "+T2BZfQ-", -2, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "+T2BZfQ-", -2, output, ARRAY_SIZE(output) - 1,
{0x4F60,0x597D,0}, 3, 3
},
/* tests string conversion with dstlen=strlen(expected_dst) */
@@ -781,72 +781,72 @@ static void test_utf7_decoding(void)
},
/* tests ill-formed UTF-7: 6 bits, not enough for a byte pair */
{
- "+T-+T-+T-hello", -1, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "+T-+T-+T-hello", -1, output, ARRAY_SIZE(output) - 1,
{'h','e','l','l','o',0}, 6, 6
},
/* tests ill-formed UTF-7: 12 bits, not enough for a byte pair */
{
- "+T2-+T2-+T2-hello", -1, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "+T2-+T2-+T2-hello", -1, output, ARRAY_SIZE(output) - 1,
{'h','e','l','l','o',0}, 6, 6
},
/* tests ill-formed UTF-7: 18 bits, not a multiple of 16 and the last bit is a 1 */
{
- "+T2B-+T2B-+T2B-hello", -1, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "+T2B-+T2B-+T2B-hello", -1, output, ARRAY_SIZE(output) - 1,
{0x4F60,0x4F60,0x4F60,'h','e','l','l','o',0}, 9, 9
},
/* tests ill-formed UTF-7: 24 bits, a multiple of 8 but not a multiple of 16 */
{
- "+T2BZ-+T2BZ-+T2BZ-hello", -1, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "+T2BZ-+T2BZ-+T2BZ-hello", -1, output, ARRAY_SIZE(output) - 1,
{0x4F60,0x4F60,0x4F60,'h','e','l','l','o',0}, 9, 9
},
/* tests UTF-7 followed by characters that should be encoded but aren't */
{
- "+T2BZ-\x82\xFE", -1, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "+T2BZ-\x82\xFE", -1, output, ARRAY_SIZE(output) - 1,
{0x4F60,0x0082,0x00FE,0}, 4, 4
},
/* tests srclen > strlen(src) */
{
- "a\0b", 4, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "a\0b", 4, output, ARRAY_SIZE(output) - 1,
{'a',0,'b',0}, 4, 4
},
/* tests srclen < strlen(src) outside of a UTF-7 sequence */
{
- "hello", 2, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "hello", 2, output, ARRAY_SIZE(output) - 1,
{'h','e'}, 2, 2
},
/* tests srclen < strlen(src) inside of a UTF-7 sequence */
{
- "+T2BZfQ-", 4, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "+T2BZfQ-", 4, output, ARRAY_SIZE(output) - 1,
{0x4F60}, 1, 1
},
/* tests srclen < strlen(src) right at the beginning of a UTF-7 sequence */
{
- "hi+T2A-", 3, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "hi+T2A-", 3, output, ARRAY_SIZE(output) - 1,
{'h','i'}, 2, 2
},
/* tests srclen < strlen(src) right at the end of a UTF-7 sequence */
{
- "+T2A-hi", 5, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "+T2A-hi", 5, output, ARRAY_SIZE(output) - 1,
{0x4F60}, 1, 1
},
/* tests srclen < strlen(src) at the beginning of an escaped + sign */
{
- "hi+-", 3, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "hi+-", 3, output, ARRAY_SIZE(output) - 1,
{'h','i'}, 2, 2
},
/* tests srclen < strlen(src) at the end of an escaped + sign */
{
- "+-hi", 2, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "+-hi", 2, output, ARRAY_SIZE(output) - 1,
{'+'}, 1, 1
},
/* tests len=0 but no error */
{
- "+", 1, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "+", 1, output, ARRAY_SIZE(output) - 1,
{}, 0, 0
},
/* tests a single null char */
{
- "", -1, output, sizeof(output) / sizeof(WCHAR) - 1,
+ "", -1, output, ARRAY_SIZE(output) - 1,
{0}, 1, 1
},
/* tests a buffer that runs out while not decoding a UTF-7 sequence */
@@ -867,9 +867,9 @@ static void test_utf7_decoding(void)
sprintf(input, "+%c+AAA", i);
memset(output, 0x23, sizeof(output) - sizeof(WCHAR));
- output[sizeof(output) / sizeof(WCHAR) - 1] = 0;
+ output[ARRAY_SIZE(output) - 1] = 0;
- len = MultiByteToWideChar(CP_UTF7, 0, input, 7, output, sizeof(output) / sizeof(WCHAR) - 1);
+ len = MultiByteToWideChar(CP_UTF7, 0, input, 7, output, ARRAY_SIZE(output) - 1);
if (i == '-')
{
@@ -909,9 +909,9 @@ static void test_utf7_decoding(void)
sprintf(input, "+B%c+AAA", i);
memset(output, 0x23, sizeof(output) - sizeof(WCHAR));
- output[sizeof(output) / sizeof(WCHAR) - 1] = 0;
+ output[ARRAY_SIZE(output) - 1] = 0;
- len = MultiByteToWideChar(CP_UTF7, 0, input, 8, output, sizeof(output) / sizeof(WCHAR) - 1);
+ len = MultiByteToWideChar(CP_UTF7, 0, input, 8, output, ARRAY_SIZE(output) - 1);
if (i == '-')
{
@@ -955,10 +955,10 @@ static void test_utf7_decoding(void)
i, wine_dbgstr_wn(expected, expected_len + 1), wine_dbgstr_wn(output, expected_len + 1));
}
- for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(tests); i++)
{
memset(output, 0x23, sizeof(output) - sizeof(WCHAR));
- output[sizeof(output) / sizeof(WCHAR) - 1] = 0;
+ output[ARRAY_SIZE(output) - 1] = 0;
SetLastError(0xdeadbeef);
len = MultiByteToWideChar(CP_UTF7, 0, tests[i].src, tests[i].srclen,
@@ -1004,7 +1004,7 @@ static void test_undefined_byte_char(void)
};
INT i, ret;
- for (i = 0; i < (sizeof(testset) / sizeof(testset[0])); i++) {
+ for (i = 0; i < ARRAY_SIZE(testset); i++) {
if (! IsValidCodePage(testset[i].codepage))
{
skip("Codepage %d not available\n", testset[i].codepage);
@@ -1106,7 +1106,7 @@ static void test_threadcp(void)
last = GetThreadLocale();
acp = GetACP();
- for (i = 0; i < sizeof(lcids)/sizeof(lcids[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(lcids); i++)
{
SetThreadLocale(lcids[i].lcid);
@@ -1151,7 +1151,7 @@ static void test_threadcp(void)
}
/* IsDBCSLeadByteEx - locales without codepage */
- for (i = 0; i < sizeof(isleads_nocp)/sizeof(isleads_nocp[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(isleads_nocp); i++)
{
SetThreadLocale(isleads_nocp[i].lcid);
@@ -1163,7 +1163,7 @@ static void test_threadcp(void)
}
/* IsDBCSLeadByteEx - locales with codepage */
- for (i = 0; i < sizeof(isleads)/sizeof(isleads[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(isleads); i++)
{
SetThreadLocale(isleads[i].lcid);
@@ -1194,7 +1194,7 @@ static void test_dbcs_to_widechar(void)
MB_COMPOSITE |MB_ERR_INVALID_CHARS|MB_USEGLYPHCHARS,
};
- for (i = 0; i < sizeof(flags)/sizeof(DWORD); ++i)
+ for (i = 0; i < ARRAY_SIZE(flags); ++i)
{
memset(wbuf, 0xff, sizeof(wbuf));
count = MultiByteToWideChar(936, flags[i], (char*)&buf[0], 2, NULL, 0);
@@ -1206,7 +1206,7 @@ static void test_dbcs_to_widechar(void)
ok(wbuf[1] == 0xffff, "%04x: returned %04x (expected ffff)\n", flags[i], wbuf[1]);
}
- for (i = 0; i < sizeof(flags)/sizeof(DWORD); ++i)
+ for (i = 0; i < ARRAY_SIZE(flags); ++i)
{
memset(wbuf, 0xff, sizeof(wbuf));
count = MultiByteToWideChar(936, flags[i], (char*)&buf[0], 3, NULL, 0);
@@ -1232,7 +1232,7 @@ static void test_dbcs_to_widechar(void)
}
/* src ends with null character */
- for (i = 0; i < sizeof(flags)/sizeof(DWORD); ++i)
+ for (i = 0; i < ARRAY_SIZE(flags); ++i)
{
memset(wbuf, 0xff, sizeof(wbuf));
count = MultiByteToWideChar(936, flags[i], (char*)&buf[0], 4, NULL, 0);
@@ -1261,7 +1261,7 @@ static void test_dbcs_to_widechar(void)
}
/* src has null character, but not ends with it */
- for (i = 0; i < sizeof(flags)/sizeof(DWORD); ++i)
+ for (i = 0; i < ARRAY_SIZE(flags); ++i)
{
memset(wbuf, 0xff, sizeof(wbuf));
count = MultiByteToWideChar(936, flags[i], (char*)&buf[0], 5, NULL, 0);
diff --git a/dlls/kernel32/tests/comm.c b/dlls/kernel32/tests/comm.c
index d671e40f87..97a71358fe 100644
--- a/dlls/kernel32/tests/comm.c
+++ b/dlls/kernel32/tests/comm.c
@@ -580,7 +580,7 @@ static void test_BuildCommDCBW(const char *string, const TEST *ptest, int initia
WCHAR wide_string[sizeof(ptest->string)];
static int reportedDCBW = 0;
- MultiByteToWideChar(CP_ACP, 0, string, -1, wide_string, sizeof(wide_string) / sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, string, -1, wide_string, ARRAY_SIZE(wide_string));
/* set initial conditions */
memset(&dcb, initial_value, sizeof(DCB));
@@ -608,7 +608,7 @@ static void test_BuildCommDCBAndTimeoutsW(const char *string, const TEST *ptest,
WCHAR wide_string[sizeof(ptest->string)];
static int reportedDCBAndTW = 0;
- MultiByteToWideChar(CP_ACP, 0, string, -1, wide_string, sizeof(wide_string) / sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, string, -1, wide_string, ARRAY_SIZE(wide_string));
/* set initial conditions */
memset(&dcb, initial_value, sizeof(DCB));
diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c
index 926c052686..ac77ab76b0 100644
--- a/dlls/kernel32/tests/console.c
+++ b/dlls/kernel32/tests/console.c
@@ -982,7 +982,7 @@ static void test_GetSetConsoleInputExeName(void)
GetModuleFileNameA(GetModuleHandleA(NULL), module, sizeof(module));
p = strrchr(module, '\\') + 1;
- ret = pGetConsoleInputExeNameA(sizeof(buffer)/sizeof(buffer[0]), buffer);
+ ret = pGetConsoleInputExeNameA(ARRAY_SIZE(buffer), buffer);
ok(ret, "GetConsoleInputExeNameA failed\n");
todo_wine ok(!lstrcmpA(buffer, p), "got %s expected %s\n", buffer, p);
@@ -1001,7 +1001,7 @@ static void test_GetSetConsoleInputExeName(void)
ret = pSetConsoleInputExeNameA(input_exe);
ok(ret, "SetConsoleInputExeNameA failed\n");
- ret = pGetConsoleInputExeNameA(sizeof(buffer)/sizeof(buffer[0]), buffer);
+ ret = pGetConsoleInputExeNameA(ARRAY_SIZE(buffer), buffer);
ok(ret, "GetConsoleInputExeNameA failed\n");
ok(!lstrcmpA(buffer, input_exe), "got %s expected %s\n", buffer, input_exe);
}
@@ -1074,7 +1074,7 @@ static void test_OpenCON(void)
unsigned i;
HANDLE h;
- for (i = 0; i < sizeof(accesses) / sizeof(accesses[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(accesses); i++)
{
h = CreateFileW(conW, GENERIC_WRITE, 0, NULL, accesses[i], 0, NULL);
ok(h != INVALID_HANDLE_VALUE || broken(accesses[i] == TRUNCATE_EXISTING /* Win8 */),
@@ -1179,7 +1179,7 @@ static void test_OpenConsoleW(void)
return;
}
- for (index = 0; index < sizeof(invalid_table)/sizeof(invalid_table[0]); index++)
+ for (index = 0; index < ARRAY_SIZE(invalid_table); index++)
{
SetLastError(0xdeadbeef);
ret = pOpenConsoleW(invalid_table[index].name, invalid_table[index].access,
@@ -1193,7 +1193,7 @@ static void test_OpenConsoleW(void)
invalid_table[index].gle, invalid_table[index].gle2, index, gle);
}
- for (index = 0; index < sizeof(valid_table)/sizeof(valid_table[0]); index++)
+ for (index = 0; index < ARRAY_SIZE(valid_table); index++)
{
ret = pOpenConsoleW(valid_table[index].name, valid_table[index].access,
valid_table[index].inherit, valid_table[index].creation);
@@ -1248,7 +1248,7 @@ static void test_CreateFileW(void)
HANDLE ret;
SECURITY_ATTRIBUTES sa;
- for (index = 0; index < sizeof(cf_table)/sizeof(cf_table[0]); index++)
+ for (index = 0; index < ARRAY_SIZE(cf_table); index++)
{
SetLastError(0xdeadbeef);
@@ -1380,7 +1380,7 @@ static void test_GetNumberOfConsoleInputEvents(HANDLE input_handle)
{INVALID_HANDLE_VALUE, &count, ERROR_INVALID_HANDLE},
};
- for (i = 0; i < sizeof(invalid_table)/sizeof(invalid_table[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(invalid_table); i++)
{
SetLastError(0xdeadbeef);
if (invalid_table[i].nrofevents) count = 0xdeadbeef;
@@ -1481,7 +1481,7 @@ static void test_WriteConsoleInputA(HANDLE input_handle)
event.EventType = MOUSE_EVENT;
event.Event.MouseEvent = mouse_event;
- for (i = 0; i < sizeof(invalid_table)/sizeof(invalid_table[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(invalid_table); i++)
{
if (invalid_table[i].win_crash)
continue;
@@ -1541,31 +1541,31 @@ static void test_WriteConsoleInputA(HANDLE input_handle)
ret = FlushConsoleInputBuffer(input_handle);
ok(ret == TRUE, "Expected FlushConsoleInputBuffer to return TRUE, got %d\n", ret);
- for (i = 0; i < sizeof(event_list)/sizeof(event_list[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(event_list); i++)
{
event_list[i].EventType = MOUSE_EVENT;
event_list[i].Event.MouseEvent = mouse_event;
}
/* Writing consecutive chunks of mouse events appears to work. */
- ret = WriteConsoleInputA(input_handle, event_list, sizeof(event_list)/sizeof(event_list[0]), &count);
+ ret = WriteConsoleInputA(input_handle, event_list, ARRAY_SIZE(event_list), &count);
ok(ret == TRUE, "Expected WriteConsoleInputA to return TRUE, got %d\n", ret);
- ok(count == sizeof(event_list)/sizeof(event_list[0]),
+ ok(count == ARRAY_SIZE(event_list),
"Expected count to be event list length, got %u\n", count);
ret = GetNumberOfConsoleInputEvents(input_handle, &count);
ok(ret == TRUE, "Expected GetNumberOfConsoleInputEvents to return TRUE, got %d\n", ret);
- ok(count == sizeof(event_list)/sizeof(event_list[0]),
+ ok(count == ARRAY_SIZE(event_list),
"Expected count to be event list length, got %u\n", count);
- ret = WriteConsoleInputA(input_handle, event_list, sizeof(event_list)/sizeof(event_list[0]), &count);
+ ret = WriteConsoleInputA(input_handle, event_list, ARRAY_SIZE(event_list), &count);
ok(ret == TRUE, "Expected WriteConsoleInputA to return TRUE, got %d\n", ret);
- ok(count == sizeof(event_list)/sizeof(event_list[0]),
+ ok(count == ARRAY_SIZE(event_list),
"Expected count to be event list length, got %u\n", count);
ret = GetNumberOfConsoleInputEvents(input_handle, &count);
ok(ret == TRUE, "Expected GetNumberOfConsoleInputEvents to return TRUE, got %d\n", ret);
- ok(count == 2*sizeof(event_list)/sizeof(event_list[0]),
+ ok(count == 2*ARRAY_SIZE(event_list),
"Expected count to be twice event list length, got %u\n", count);
/* Again, writing a single mouse event with adjacent mouse events queued doesn't appear to affect the count. */
@@ -1576,7 +1576,7 @@ static void test_WriteConsoleInputA(HANDLE input_handle)
ret = GetNumberOfConsoleInputEvents(input_handle, &count);
ok(ret == TRUE, "Expected GetNumberOfConsoleInputEvents to return TRUE, got %d\n", ret);
todo_wine
- ok(count == 2*sizeof(event_list)/sizeof(event_list[0]),
+ ok(count == 2*ARRAY_SIZE(event_list),
"Expected count to be twice event list length, got %u\n", count);
ret = FlushConsoleInputBuffer(input_handle);
@@ -1718,7 +1718,7 @@ static void test_WriteConsoleInputW(HANDLE input_handle)
event.EventType = MOUSE_EVENT;
event.Event.MouseEvent = mouse_event;
- for (i = 0; i < sizeof(invalid_table)/sizeof(invalid_table[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(invalid_table); i++)
{
if (invalid_table[i].win_crash)
continue;
@@ -1778,31 +1778,31 @@ static void test_WriteConsoleInputW(HANDLE input_handle)
ret = FlushConsoleInputBuffer(input_handle);
ok(ret == TRUE, "Expected FlushConsoleInputBuffer to return TRUE, got %d\n", ret);
- for (i = 0; i < sizeof(event_list)/sizeof(event_list[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(event_list); i++)
{
event_list[i].EventType = MOUSE_EVENT;
event_list[i].Event.MouseEvent = mouse_event;
}
/* Writing consecutive chunks of mouse events appears to work. */
- ret = WriteConsoleInputW(input_handle, event_list, sizeof(event_list)/sizeof(event_list[0]), &count);
+ ret = WriteConsoleInputW(input_handle, event_list, ARRAY_SIZE(event_list), &count);
ok(ret == TRUE, "Expected WriteConsoleInputW to return TRUE, got %d\n", ret);
- ok(count == sizeof(event_list)/sizeof(event_list[0]),
+ ok(count == ARRAY_SIZE(event_list),
"Expected count to be event list length, got %u\n", count);
ret = GetNumberOfConsoleInputEvents(input_handle, &count);
ok(ret == TRUE, "Expected GetNumberOfConsoleInputEvents to return TRUE, got %d\n", ret);
- ok(count == sizeof(event_list)/sizeof(event_list[0]),
+ ok(count == ARRAY_SIZE(event_list),
"Expected count to be event list length, got %u\n", count);
- ret = WriteConsoleInputW(input_handle, event_list, sizeof(event_list)/sizeof(event_list[0]), &count);
+ ret = WriteConsoleInputW(input_handle, event_list, ARRAY_SIZE(event_list), &count);
ok(ret == TRUE, "Expected WriteConsoleInputW to return TRUE, got %d\n", ret);
- ok(count == sizeof(event_list)/sizeof(event_list[0]),
+ ok(count == ARRAY_SIZE(event_list),
"Expected count to be event list length, got %u\n", count);
ret = GetNumberOfConsoleInputEvents(input_handle, &count);
ok(ret == TRUE, "Expected GetNumberOfConsoleInputEvents to return TRUE, got %d\n", ret);
- ok(count == 2*sizeof(event_list)/sizeof(event_list[0]),
+ ok(count == 2*ARRAY_SIZE(event_list),
"Expected count to be twice event list length, got %u\n", count);
/* Again, writing a single mouse event with adjacent mouse events queued doesn't appear to affect the count. */
@@ -1813,7 +1813,7 @@ static void test_WriteConsoleInputW(HANDLE input_handle)
ret = GetNumberOfConsoleInputEvents(input_handle, &count);
ok(ret == TRUE, "Expected GetNumberOfConsoleInputEvents to return TRUE, got %d\n", ret);
todo_wine
- ok(count == 2*sizeof(event_list)/sizeof(event_list[0]),
+ ok(count == 2*ARRAY_SIZE(event_list),
"Expected count to be twice event list length, got %u\n", count);
ret = FlushConsoleInputBuffer(input_handle);
@@ -1932,7 +1932,7 @@ static void test_WriteConsoleOutputCharacterA(HANDLE output_handle)
{output_handle, output, 1, {0, 0}, NULL, 0xdeadbeef, ERROR_INVALID_ACCESS, 1},
};
- for (i = 0; i < sizeof(invalid_table)/sizeof(invalid_table[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(invalid_table); i++)
{
if (invalid_table[i].win7_crash)
continue;
@@ -2016,7 +2016,7 @@ static void test_WriteConsoleOutputCharacterW(HANDLE output_handle)
{output_handle, outputW, 1, {0, 0}, NULL, 0xdeadbeef, ERROR_INVALID_ACCESS, 1},
};
- for (i = 0; i < sizeof(invalid_table)/sizeof(invalid_table[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(invalid_table); i++)
{
if (invalid_table[i].win7_crash)
continue;
@@ -2099,7 +2099,7 @@ static void test_WriteConsoleOutputAttribute(HANDLE output_handle)
{output_handle, &attr, 1, {0, 0}, NULL, 0xdeadbeef, ERROR_INVALID_ACCESS, 1},
};
- for (i = 0; i < sizeof(invalid_table)/sizeof(invalid_table[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(invalid_table); i++)
{
if (invalid_table[i].win7_crash)
continue;
@@ -2169,7 +2169,7 @@ static void test_FillConsoleOutputCharacterA(HANDLE output_handle)
{output_handle, 'a', 1, {0, 0}, NULL, ERROR_INVALID_ACCESS, 1},
};
- for (i = 0; i < sizeof(invalid_table)/sizeof(invalid_table[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(invalid_table); i++)
{
if (invalid_table[i].win7_crash)
continue;
@@ -2228,7 +2228,7 @@ static void test_FillConsoleOutputCharacterW(HANDLE output_handle)
{output_handle, 'a', 1, {0, 0}, NULL, ERROR_INVALID_ACCESS, 1},
};
- for (i = 0; i < sizeof(invalid_table)/sizeof(invalid_table[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(invalid_table); i++)
{
if (invalid_table[i].win7_crash)
continue;
@@ -2287,7 +2287,7 @@ static void test_FillConsoleOutputAttribute(HANDLE output_handle)
{output_handle, FOREGROUND_BLUE, 1, {0, 0}, NULL, ERROR_INVALID_ACCESS, 1},
};
- for (i = 0; i < sizeof(invalid_table)/sizeof(invalid_table[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(invalid_table); i++)
{
if (invalid_table[i].win7_crash)
continue;
@@ -2365,7 +2365,7 @@ static void test_ReadConsoleOutputCharacterA(HANDLE output_handle)
{output_handle, &read, 1, {0, 0}, NULL, 0xdeadbeef, ERROR_INVALID_ACCESS, 1},
};
- for (i = 0; i < sizeof(invalid_table)/sizeof(invalid_table[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(invalid_table); i++)
{
if (invalid_table[i].win7_crash)
continue;
@@ -2449,7 +2449,7 @@ static void test_ReadConsoleOutputCharacterW(HANDLE output_handle)
{output_handle, &read, 1, {0, 0}, NULL, 0xdeadbeef, ERROR_INVALID_ACCESS, 1},
};
- for (i = 0; i < sizeof(invalid_table)/sizeof(invalid_table[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(invalid_table); i++)
{
if (invalid_table[i].win7_crash)
continue;
@@ -2532,7 +2532,7 @@ static void test_ReadConsoleOutputAttribute(HANDLE output_handle)
{output_handle, &attr, 1, {0, 0}, NULL, 0xdeadbeef, ERROR_INVALID_ACCESS, 1},
};
- for (i = 0; i < sizeof(invalid_table)/sizeof(invalid_table[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(invalid_table); i++)
{
if (invalid_table[i].win7_crash)
continue;
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index 410c3f0591..1c4157279b 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -1836,7 +1836,7 @@ static void test_DeleteFileW( void )
/* test DeleteFile on empty directory */
ret = GetTempPathW(MAX_PATH, pathW);
- if (ret + sizeof(dirW)/sizeof(WCHAR)-1 + sizeof(subdirW)/sizeof(WCHAR)-1 >= MAX_PATH)
+ if (ret + ARRAY_SIZE(dirW)-1 + ARRAY_SIZE(subdirW)-1 >= MAX_PATH)
{
ok(0, "MAX_PATH exceeded in constructing paths\n");
return;
@@ -2366,9 +2366,9 @@ static void test_file_sharing(void)
return;
}
- for (a1 = 0; a1 < sizeof(access_modes)/sizeof(access_modes[0]); a1++)
+ for (a1 = 0; a1 < ARRAY_SIZE(access_modes); a1++)
{
- for (s1 = 0; s1 < sizeof(sharing_modes)/sizeof(sharing_modes[0]); s1++)
+ for (s1 = 0; s1 < ARRAY_SIZE(sharing_modes); s1++)
{
SetLastError(0xdeadbeef);
h = CreateFileA( filename, access_modes[a1].dw, sharing_modes[s1].dw,
@@ -2378,9 +2378,9 @@ static void test_file_sharing(void)
ok(0,"couldn't create file \"%s\" (err=%d)\n",filename,GetLastError());
return;
}
- for (a2 = 0; a2 < sizeof(access_modes)/sizeof(access_modes[0]); a2++)
+ for (a2 = 0; a2 < ARRAY_SIZE(access_modes); a2++)
{
- for (s2 = 0; s2 < sizeof(sharing_modes)/sizeof(sharing_modes[0]); s2++)
+ for (s2 = 0; s2 < ARRAY_SIZE(sharing_modes); s2++)
{
SetLastError(0xdeadbeef);
h2 = CreateFileA( filename, access_modes[a2].dw, sharing_modes[s2].dw,
@@ -2411,7 +2411,7 @@ static void test_file_sharing(void)
}
}
- for (a1 = 0; a1 < sizeof(mapping_modes)/sizeof(mapping_modes[0]); a1++)
+ for (a1 = 0; a1 < ARRAY_SIZE(mapping_modes); a1++)
{
HANDLE m;
@@ -2428,9 +2428,9 @@ static void test_file_sharing(void)
CloseHandle( h );
if (!m) continue;
- for (a2 = 0; a2 < sizeof(access_modes)/sizeof(access_modes[0]); a2++)
+ for (a2 = 0; a2 < ARRAY_SIZE(access_modes); a2++)
{
- for (s2 = 0; s2 < sizeof(sharing_modes)/sizeof(sharing_modes[0]); s2++)
+ for (s2 = 0; s2 < ARRAY_SIZE(sharing_modes); s2++)
{
SetLastError(0xdeadbeef);
h2 = CreateFileA( filename, access_modes[a2].dw, sharing_modes[s2].dw,
@@ -2861,10 +2861,10 @@ static void test_FindFirstFile_wildcards(void)
CreateDirectoryA("test-dir", NULL);
SetCurrentDirectoryA("test-dir");
- for (i = 0; i < sizeof(files) / sizeof(files[0]); ++i)
+ for (i = 0; i < ARRAY_SIZE(files); ++i)
_lclose(_lcreat(files[i], 0));
- for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i)
+ for (i = 0; i < ARRAY_SIZE(tests); ++i)
{
char correct[512];
char incorrect[512];
@@ -2901,7 +2901,7 @@ static void test_FindFirstFile_wildcards(void)
missing[0] ? missing+2 : "none");
}
- for (i = 0; i < sizeof(files) / sizeof(files[0]); ++i)
+ for (i = 0; i < ARRAY_SIZE(files); ++i)
DeleteFileA(files[i]);
SetCurrentDirectoryA("..");
RemoveDirectoryA("test-dir");
@@ -3007,7 +3007,7 @@ static void test_async_file_errors(void)
ovl.hEvent = hSem;
completion_count = 0;
szFile[0] = '\0';
- GetWindowsDirectoryA(szFile, sizeof(szFile)/sizeof(szFile[0])-1-strlen("\\win.ini"));
+ GetWindowsDirectoryA(szFile, ARRAY_SIZE(szFile)-1-strlen("\\win.ini"));
strcat(szFile, "\\win.ini");
hFile = CreateFileA(szFile, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, OPEN_ALWAYS, FILE_FLAG_OVERLAPPED, NULL);
@@ -3881,7 +3881,7 @@ todo_wine_if (i == 1)
}
}
- for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(td); i++)
{
SetLastError(0xdeadbeef);
hfile = CreateFileA(file_name, td[i].access, 0, NULL, td[i].disposition, 0, 0);
@@ -3987,7 +3987,7 @@ static void test_GetFileInformationByHandleEx(void)
ok(directory != INVALID_HANDLE_VALUE, "GetFileInformationByHandleEx: failed to open the temp folder, "
"got error %u.\n", GetLastError());
- for (i = 0; i < sizeof(checks) / sizeof(checks[0]); i += 1)
+ for (i = 0; i < ARRAY_SIZE(checks); i += 1)
{
SetLastError(0xdeadbeef);
ret = pGetFileInformationByHandleEx(directory, checks[i].handleClass, checks[i].ptr, checks[i].size);
@@ -4129,7 +4129,7 @@ static void test_OpenFileById(void)
ok(ret2 != INVALID_FILE_ATTRIBUTES,
"OpenFileById: GetFileAttributesA failed to find the temp file, got error %u\n", GetLastError());
- ret2 = MultiByteToWideChar(CP_ACP, 0, tempFileName + strlen(tempPath), -1, tempFileNameW, sizeof(tempFileNameW)/sizeof(tempFileNameW[0]));
+ ret2 = MultiByteToWideChar(CP_ACP, 0, tempFileName + strlen(tempPath), -1, tempFileNameW, ARRAY_SIZE(tempFileNameW));
ok(ret2, "OpenFileById: MultiByteToWideChar failed to convert tempFileName, got error %u.\n", GetLastError());
tempFileNameLen = ret2 - 1;
@@ -4587,7 +4587,7 @@ static void test_file_access(void)
GetTempPathA(MAX_PATH, path);
GetTempFileNameA(path, "foo", 0, fname);
- for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(td); i++)
{
SetLastError(0xdeadbeef);
hfile = CreateFileA(fname, td[i].access, 0, NULL, CREATE_ALWAYS,
@@ -4601,7 +4601,7 @@ static void test_file_access(void)
else
ok(hfile != INVALID_HANDLE_VALUE, "%d: CreateFile error %d\n", i, GetLastError());
- for (j = 0; j < sizeof(td)/sizeof(td[0]); j++)
+ for (j = 0; j < ARRAY_SIZE(td); j++)
{
SetLastError(0xdeadbeef);
ret = DuplicateHandle(GetCurrentProcess(), hfile, GetCurrentProcess(), &hdup,
@@ -4843,7 +4843,7 @@ static void test_GetFinalPathNameByHandleW(void)
success = GetVolumePathNameW(long_path, drive_part, MAX_PATH);
ok(success, "GetVolumePathNameW error %u\n", GetLastError());
- success = GetVolumeNameForVolumeMountPointW(drive_part, volume_path, sizeof(volume_path) / sizeof(WCHAR));
+ success = GetVolumeNameForVolumeMountPointW(drive_part, volume_path, ARRAY_SIZE(volume_path));
ok(success, "GetVolumeNameForVolumeMountPointW error %u\n", GetLastError());
/* Test for VOLUME_NAME_GUID */
@@ -4863,7 +4863,7 @@ static void test_GetFinalPathNameByHandleW(void)
wine_dbgstr_w(file_part), wine_dbgstr_w(result_path));
drive_part[lstrlenW(drive_part)-1] = 0;
- success = QueryDosDeviceW(drive_part, nt_path, sizeof(nt_path) / sizeof(WCHAR));
+ success = QueryDosDeviceW(drive_part, nt_path, ARRAY_SIZE(nt_path));
ok(success, "QueryDosDeviceW error %u\n", GetLastError());
/* Test for VOLUME_NAME_NT */
diff --git a/dlls/kernel32/tests/heap.c b/dlls/kernel32/tests/heap.c
index fefd3e7956..38fae0eede 100644
--- a/dlls/kernel32/tests/heap.c
+++ b/dlls/kernel32/tests/heap.c
@@ -823,7 +823,7 @@ static void test_obsolete_flags(void)
return;
}
- for (i = 0; i < sizeof(test_global_flags)/sizeof(test_global_flags[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(test_global_flags); i++)
{
gbl = GlobalAlloc(test_global_flags[i].flags, 4);
ok(gbl != NULL, "GlobalAlloc failed\n");
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
index c9ca02c28e..38ae3685dc 100644
--- a/dlls/kernel32/tests/loader.c
+++ b/dlls/kernel32/tests/loader.c
@@ -697,7 +697,7 @@ static void test_Loader(void)
/* prevent displaying of the "Unable to load this DLL" message box */
SetErrorMode(SEM_FAILCRITICALERRORS);
- for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(td); i++)
{
nt_header = nt_header_template;
nt_header.FileHeader.NumberOfSections = td[i].number_of_sections;
@@ -922,7 +922,7 @@ static void test_Loader(void)
error_match = FALSE;
for (error_index = 0;
- ! error_match && error_index < sizeof(td[i].errors) / sizeof(DWORD);
+ ! error_match && error_index < ARRAY_SIZE(td[i].errors);
error_index++)
{
error_match = td[i].errors[error_index] == GetLastError();
@@ -1581,7 +1581,7 @@ static void test_VirtualProtect(void *base, void *section)
orig_prot = old_prot;
- for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(td); i++)
{
SetLastError(0xdeadbeef);
ret = VirtualQuery(section, &info, sizeof(info));
@@ -1712,7 +1712,7 @@ static void test_section_access(void)
GetTempPathA(MAX_PATH, temp_path);
- for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(td); i++)
{
IMAGE_NT_HEADERS nt_header;
@@ -2028,7 +2028,7 @@ static DWORD WINAPI mutex_thread_proc(void *param)
trace("%04x: mutex_thread_proc: starting\n", GetCurrentThreadId());
while (1)
{
- ret = WaitForMultipleObjects(sizeof(wait_list)/sizeof(wait_list[0]), wait_list, FALSE, 50);
+ ret = WaitForMultipleObjects(ARRAY_SIZE(wait_list), wait_list, FALSE, 50);
if (ret == WAIT_OBJECT_0) break;
else if (ret == WAIT_OBJECT_0 + 1)
{
@@ -3364,7 +3364,7 @@ static void test_ResolveDelayLoadedAPI(void)
section.PointerToRawData = 0x2000;
section.VirtualAddress = 0x2000;
- i = sizeof(td)/sizeof(td[0]);
+ i = ARRAY_SIZE(td);
section.Misc.VirtualSize = sizeof(test_dll) + sizeof(hint) + sizeof(test_func) + sizeof(HMODULE) +
2 * (i + 1) * sizeof(IMAGE_THUNK_DATA);
ok(section.Misc.VirtualSize <= 0x1000, "Too much tests, add a new section!\n");
@@ -3413,7 +3413,7 @@ static void test_ResolveDelayLoadedAPI(void)
SetFilePointer( hfile, idd.ImportAddressTableRVA, NULL, SEEK_SET );
- for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(td); i++)
{
/* 0x1a00 is an empty space between delay data and extended delay data, real thunks are not necessary */
itd32.u1.Function = nt_header.OptionalHeader.ImageBase + 0x1a00 + i * 0x20;
@@ -3427,7 +3427,7 @@ static void test_ResolveDelayLoadedAPI(void)
ret = WriteFile(hfile, &itd32, sizeof(itd32), &dummy, NULL);
ok(ret, "WriteFile error %d\n", GetLastError());
- for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(td); i++)
{
if (td[i].func)
itd32.u1.AddressOfData = idd.DllNameRVA + sizeof(test_dll);
@@ -3480,7 +3480,7 @@ static void test_ResolveDelayLoadedAPI(void)
itda = RVAToAddr(delaydir->ImportAddressTableRVA, hlib);
htarget = LoadLibraryA(RVAToAddr(delaydir->DllNameRVA, hlib));
- for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(td); i++)
{
void *ret, *load;
diff --git a/dlls/kernel32/tests/module.c b/dlls/kernel32/tests/module.c
index 0b4ce14c46..ba65e0a761 100644
--- a/dlls/kernel32/tests/module.c
+++ b/dlls/kernel32/tests/module.c
@@ -39,7 +39,7 @@ static BOOL cmpStrAW(const char* a, const WCHAR* b, DWORD lenA, DWORD lenB)
WCHAR aw[1024];
DWORD len = MultiByteToWideChar( AreFileApisANSI() ? CP_ACP : CP_OEMCP, 0,
- a, lenA, aw, sizeof(aw) / sizeof(aw[0]) );
+ a, lenA, aw, ARRAY_SIZE(aw));
if (len != lenB) return FALSE;
return memcmp(aw, b, len * sizeof(WCHAR)) == 0;
}
@@ -149,7 +149,7 @@ static void testGetModuleFileName(const char* name)
{
memset(bufW, '-', sizeof(bufW));
SetLastError(0xdeadbeef);
- len1W = GetModuleFileNameW(hMod, bufW, sizeof(bufW) / sizeof(WCHAR));
+ len1W = GetModuleFileNameW(hMod, bufW, ARRAY_SIZE(bufW));
ok(GetLastError() == ERROR_SUCCESS ||
broken(GetLastError() == 0xdeadbeef), /* <= XP SP3 */
"LastError was not reset: %u\n", GetLastError());
@@ -191,7 +191,8 @@ static void testGetModuleFileName_Wrong(void)
if (is_unicode_enabled)
{
bufW[0] = '*';
- ok(GetModuleFileNameW((void*)0xffffffff, bufW, sizeof(bufW) / sizeof(WCHAR)) == 0, "Unexpected success in module handle\n");
+ ok(GetModuleFileNameW((void*)0xffffffff, bufW, ARRAY_SIZE(bufW)) == 0,
+ "Unexpected success in module handle\n");
ok(bufW[0] == '*', "When failing, buffer shouldn't be written to\n");
}
@@ -538,7 +539,7 @@ static void test_LoadLibraryEx_search_flags(void)
ok( !mod, "LoadLibrary succeeded\n" );
ok( GetLastError() == ERROR_MOD_NOT_FOUND, "wrong error %u\n", GetLastError() );
- for (j = 0; j < sizeof(tests) / sizeof(tests[0]); j++)
+ for (j = 0; j < ARRAY_SIZE(tests); j++)
{
for (k = 0; tests[j].add_dirs[k]; k++)
{
@@ -598,7 +599,7 @@ static void testGetDllDirectory(void)
"C:\\Some\\Path\\",
"Q:\\A\\Long\\Path with spaces that\\probably\\doesn't exist!",
};
- const int test_count = sizeof(dll_directories) / sizeof(dll_directories[0]);
+ const int test_count = ARRAY_SIZE(dll_directories);
if (!pGetDllDirectoryA || !pGetDllDirectoryW)
{
@@ -917,7 +918,7 @@ static void test_AddDllDirectory(void)
}
buf[0] = '\0';
- GetTempPathW( sizeof(path)/sizeof(path[0]), path );
+ GetTempPathW(ARRAY_SIZE(path), path );
ret = GetTempFileNameW( path, tmpW, 0, buf );
ok( ret, "GetTempFileName failed err %u\n", GetLastError() );
SetLastError( 0xdeadbeef );
diff --git a/dlls/kernel32/tests/path.c b/dlls/kernel32/tests/path.c
index 632aefc34e..ca1cbf30ec 100644
--- a/dlls/kernel32/tests/path.c
+++ b/dlls/kernel32/tests/path.c
@@ -1018,7 +1018,7 @@ static void test_GetTempPathA(char* tmp_dir)
len = GetTempPathA(slen / 2, buf);
ok(len == slen || broken(len == slen + 1) /* read the big comment above */ ,
"expected %d, got %d\n", slen, len);
- for(len = 0; len < sizeof(buf) / sizeof(buf[0]); len++)
+ for(len = 0; len < ARRAY_SIZE(buf); len++)
ok(buf[len] == 'a', "expected 'a' at [%d], got 0x%x\n", len, buf[len]);
}
@@ -1029,7 +1029,7 @@ static void test_GetTempPathW(char* tmp_dir)
WCHAR tmp_dirW[MAX_PATH];
static const WCHAR fooW[] = {'f','o','o',0};
- MultiByteToWideChar(CP_ACP,0,tmp_dir,-1,tmp_dirW,sizeof(tmp_dirW)/sizeof(*tmp_dirW));
+ MultiByteToWideChar(CP_ACP, 0, tmp_dir, -1, tmp_dirW, ARRAY_SIZE(tmp_dirW));
len_with_null = lstrlenW(tmp_dirW) + 1;
/* This one is different from ANSI version: ANSI version doesn't
@@ -1064,18 +1064,18 @@ static void test_GetTempPathW(char* tmp_dir)
ok(lstrcmpiW(buf, tmp_dirW) == 0, "GetTempPathW returned an incorrect temporary path\n");
ok(len == lstrlenW(buf), "returned length should be equal to the length of string\n");
- for(len = 0; len < sizeof(buf) / sizeof(buf[0]); len++)
+ for(len = 0; len < ARRAY_SIZE(buf); len++)
buf[len] = 'a';
len = GetTempPathW(len, buf);
ok(lstrcmpiW(buf, tmp_dirW) == 0, "GetTempPathW returned an incorrect temporary path\n");
ok(len == lstrlenW(buf), "returned length should be equal to the length of string\n");
/* The rest of the buffer must be zeroed */
slen = len + 1;
- for(len++; len < sizeof(buf) / sizeof(buf[0]); len++)
+ for(len++; len < ARRAY_SIZE(buf); len++)
ok(buf[len] == '\0', "expected NULL at [%d], got 0x%x\n", len, buf[len]);
/* When the buffer is not long enough the length passed is zeroed */
- for(len = 0; len < sizeof(buf) / sizeof(buf[0]); len++)
+ for(len = 0; len < ARRAY_SIZE(buf); len++)
buf[len] = 'a';
len = GetTempPathW(slen / 2, buf);
ok(len == slen || broken(len == slen + 1) /* read the big comment above */ ,
@@ -1096,7 +1096,7 @@ static void test_GetTempPathW(char* tmp_dir)
for(len = 0; len < slen / 2; len++)
ok(buf[len] == '\0', "expected NULL at [%d], got 0x%x\n", len, buf[len]);
- for(; len < sizeof(buf) / sizeof(buf[0]); len++)
+ for(; len < ARRAY_SIZE(buf); len++)
ok(buf[len] == 'a', "expected 'a' at [%d], got 0x%x\n", len, buf[len]);
/* bogus application from bug 38220 passes the count value in sizeof(buffer)
@@ -1331,7 +1331,7 @@ static void test_GetLongPathNameW(void)
* files.
*/
name[0] = 0;
- while (lstrlenW(name) < (sizeof(name)/sizeof(WCHAR) - 1))
+ while (lstrlenW(name) < (ARRAY_SIZE(name) - 1))
lstrcatW(name, letterX);
GetTempPathW(MAX_PATH, tempdir);
@@ -1429,7 +1429,7 @@ static void test_GetShortPathNameW(void)
lstrcatW( path, test_path );
lstrcatW( path, backSlash );
short_path[0] = 0;
- length = GetShortPathNameW( path, short_path, sizeof(short_path) / sizeof(*short_path) );
+ length = GetShortPathNameW( path, short_path, ARRAY_SIZE( short_path ));
ok( length, "GetShortPathNameW returned 0.\n" );
lstrcpyW( path, tmppath );
@@ -1460,7 +1460,7 @@ static void test_GetShortPathNameW(void)
ok( file != INVALID_HANDLE_VALUE, "File was not created.\n" );
CloseHandle( file );
- length = GetShortPathNameW( path, short_path, sizeof(short_path)/sizeof(*short_path) );
+ length = GetShortPathNameW( path, short_path, ARRAY_SIZE( short_path ));
ok( length, "GetShortPathNameW failed: %u.\n", GetLastError() );
ret = DeleteFileW( path );
@@ -1752,7 +1752,7 @@ static void create_manifest_file(const char *filename, const char *manifest)
MultiByteToWideChar( CP_ACP, 0, filename, -1, path, MAX_PATH );
- GetTempPathW(sizeof(manifest_path)/sizeof(WCHAR), manifest_path);
+ GetTempPathW(ARRAY_SIZE(manifest_path), manifest_path);
lstrcatW(manifest_path, path);
file = CreateFileW(manifest_path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
@@ -1777,7 +1777,7 @@ static HANDLE test_create(const char *file)
HANDLE handle;
MultiByteToWideChar(CP_ACP, 0, file, -1, path, MAX_PATH);
- GetTempPathW(sizeof(manifest_path)/sizeof(WCHAR), manifest_path);
+ GetTempPathW(ARRAY_SIZE(manifest_path), manifest_path);
lstrcatW(manifest_path, path);
memset(&actctx, 0, sizeof(ACTCTXW));
@@ -1818,18 +1818,18 @@ static void test_SearchPathA(void)
return;
}
- GetWindowsDirectoryA(pathA, sizeof(pathA)/sizeof(CHAR));
+ GetWindowsDirectoryA(pathA, ARRAY_SIZE(pathA));
/* NULL filename */
SetLastError(0xdeadbeef);
- ret = pSearchPathA(pathA, NULL, NULL, sizeof(buffA)/sizeof(CHAR), buffA, &ptrA);
+ ret = pSearchPathA(pathA, NULL, NULL, ARRAY_SIZE(buffA), buffA, &ptrA);
ok(ret == 0, "Expected failure, got %d\n", ret);
ok(GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
/* empty filename */
SetLastError(0xdeadbeef);
- ret = pSearchPathA(pathA, fileA, NULL, sizeof(buffA)/sizeof(CHAR), buffA, &ptrA);
+ ret = pSearchPathA(pathA, fileA, NULL, ARRAY_SIZE(buffA), buffA, &ptrA);
ok(ret == 0, "Expected failure, got %d\n", ret);
ok(GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
@@ -1845,38 +1845,38 @@ static void test_SearchPathA(void)
delete_manifest_file("main.manifest");
/* search fails without active context */
- ret = pSearchPathA(NULL, testdepA, NULL, sizeof(buffA)/sizeof(CHAR), buffA, NULL);
+ ret = pSearchPathA(NULL, testdepA, NULL, ARRAY_SIZE(buffA), buffA, NULL);
ok(ret == 0, "got %d\n", ret);
- ret = pSearchPathA(NULL, kernel32A, NULL, sizeof(path2A)/sizeof(CHAR), path2A, NULL);
+ ret = pSearchPathA(NULL, kernel32A, NULL, ARRAY_SIZE(path2A), path2A, NULL);
ok(ret && ret == strlen(path2A), "got %d\n", ret);
ret = pActivateActCtx(handle, &cookie);
ok(ret, "failed to activate context, %u\n", GetLastError());
/* works when activated */
- ret = pSearchPathA(NULL, testdepA, NULL, sizeof(buffA)/sizeof(CHAR), buffA, NULL);
+ ret = pSearchPathA(NULL, testdepA, NULL, ARRAY_SIZE(buffA), buffA, NULL);
ok(ret && ret == strlen(buffA), "got %d\n", ret);
- ret = pSearchPathA(NULL, "testdep.dll", ".ext", sizeof(buffA)/sizeof(CHAR), buffA, NULL);
+ ret = pSearchPathA(NULL, "testdep.dll", ".ext", ARRAY_SIZE(buffA), buffA, NULL);
ok(ret && ret == strlen(buffA), "got %d\n", ret);
- ret = pSearchPathA(NULL, "testdep", ".dll", sizeof(buffA)/sizeof(CHAR), buffA, NULL);
+ ret = pSearchPathA(NULL, "testdep", ".dll", ARRAY_SIZE(buffA), buffA, NULL);
ok(ret && ret == strlen(buffA), "got %d\n", ret);
- ret = pSearchPathA(NULL, "testdep", ".ext", sizeof(buffA)/sizeof(CHAR), buffA, NULL);
+ ret = pSearchPathA(NULL, "testdep", ".ext", ARRAY_SIZE(buffA), buffA, NULL);
ok(!ret, "got %d\n", ret);
/* name contains path */
- ret = pSearchPathA(NULL, testdeprelA, NULL, sizeof(buffA)/sizeof(CHAR), buffA, NULL);
+ ret = pSearchPathA(NULL, testdeprelA, NULL, ARRAY_SIZE(buffA), buffA, NULL);
ok(!ret, "got %d\n", ret);
/* fails with specified path that doesn't contain this file */
- ret = pSearchPathA(pathA, testdepA, NULL, sizeof(buffA)/sizeof(CHAR), buffA, NULL);
+ ret = pSearchPathA(pathA, testdepA, NULL, ARRAY_SIZE(buffA), buffA, NULL);
ok(!ret, "got %d\n", ret);
/* path is redirected for wellknown names too */
- ret = pSearchPathA(NULL, kernel32A, NULL, sizeof(buffA)/sizeof(CHAR), buffA, NULL);
+ ret = pSearchPathA(NULL, kernel32A, NULL, ARRAY_SIZE(buffA), buffA, NULL);
ok(ret && ret == strlen(buffA), "got %d\n", ret);
ok(strcmp(buffA, path2A), "got wrong path %s, %s\n", buffA, path2A);
@@ -1911,14 +1911,14 @@ static void test_SearchPathW(void)
if (0)
{
/* NULL filename, crashes on nt4 */
- pSearchPathW(pathW, NULL, NULL, sizeof(buffW)/sizeof(WCHAR), buffW, &ptrW);
+ pSearchPathW(pathW, NULL, NULL, ARRAY_SIZE(buffW), buffW, &ptrW);
}
- GetWindowsDirectoryW(pathW, sizeof(pathW)/sizeof(WCHAR));
+ GetWindowsDirectoryW(pathW, ARRAY_SIZE(pathW));
/* empty filename */
SetLastError(0xdeadbeef);
- ret = pSearchPathW(pathW, fileW, NULL, sizeof(buffW)/sizeof(WCHAR), buffW, &ptrW);
+ ret = pSearchPathW(pathW, fileW, NULL, ARRAY_SIZE(buffW), buffW, &ptrW);
ok(ret == 0, "Expected failure, got %d\n", ret);
ok(GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
@@ -1934,50 +1934,50 @@ if (0)
delete_manifest_file("main.manifest");
/* search fails without active context */
- ret = pSearchPathW(NULL, testdepW, NULL, sizeof(buffW)/sizeof(WCHAR), buffW, NULL);
+ ret = pSearchPathW(NULL, testdepW, NULL, ARRAY_SIZE(buffW), buffW, NULL);
ok(ret == 0, "got %d\n", ret);
- ret = pSearchPathW(NULL, kernel32dllW, NULL, sizeof(path2W)/sizeof(WCHAR), path2W, NULL);
+ ret = pSearchPathW(NULL, kernel32dllW, NULL, ARRAY_SIZE(path2W), path2W, NULL);
ok(ret && ret == lstrlenW(path2W), "got %d\n", ret);
/* full path, name without 'dll' extension */
- GetSystemDirectoryW(pathW, sizeof(pathW)/sizeof(WCHAR));
- ret = pSearchPathW(pathW, kernel32W, NULL, sizeof(path2W)/sizeof(WCHAR), path2W, NULL);
+ GetSystemDirectoryW(pathW, ARRAY_SIZE(pathW));
+ ret = pSearchPathW(pathW, kernel32W, NULL, ARRAY_SIZE(path2W), path2W, NULL);
ok(ret == 0, "got %d\n", ret);
- GetWindowsDirectoryW(pathW, sizeof(pathW)/sizeof(WCHAR));
+ GetWindowsDirectoryW(pathW, ARRAY_SIZE(pathW));
ret = pActivateActCtx(handle, &cookie);
ok(ret, "failed to activate context, %u\n", GetLastError());
/* works when activated */
- ret = pSearchPathW(NULL, testdepW, NULL, sizeof(buffW)/sizeof(WCHAR), buffW, NULL);
+ ret = pSearchPathW(NULL, testdepW, NULL, ARRAY_SIZE(buffW), buffW, NULL);
ok(ret && ret == lstrlenW(buffW), "got %d\n", ret);
- ret = pSearchPathW(NULL, testdepW, extW, sizeof(buffW)/sizeof(WCHAR), buffW, NULL);
+ ret = pSearchPathW(NULL, testdepW, extW, ARRAY_SIZE(buffW), buffW, NULL);
ok(ret && ret == lstrlenW(buffW), "got %d\n", ret);
- ret = pSearchPathW(NULL, testdep1W, dllW, sizeof(buffW)/sizeof(WCHAR), buffW, NULL);
+ ret = pSearchPathW(NULL, testdep1W, dllW, ARRAY_SIZE(buffW), buffW, NULL);
ok(ret && ret == lstrlenW(buffW), "got %d\n", ret);
- ret = pSearchPathW(NULL, testdep1W, extW, sizeof(buffW)/sizeof(WCHAR), buffW, NULL);
+ ret = pSearchPathW(NULL, testdep1W, extW, ARRAY_SIZE(buffW), buffW, NULL);
ok(!ret, "got %d\n", ret);
/* name contains path */
- ret = pSearchPathW(NULL, testdeprelW, NULL, sizeof(buffW)/sizeof(WCHAR), buffW, NULL);
+ ret = pSearchPathW(NULL, testdeprelW, NULL, ARRAY_SIZE(buffW), buffW, NULL);
ok(!ret, "got %d\n", ret);
/* fails with specified path that doesn't contain this file */
- ret = pSearchPathW(pathW, testdepW, NULL, sizeof(buffW)/sizeof(WCHAR), buffW, NULL);
+ ret = pSearchPathW(pathW, testdepW, NULL, ARRAY_SIZE(buffW), buffW, NULL);
ok(!ret, "got %d\n", ret);
/* path is redirected for wellknown names too, meaning it takes precedence over normal search order */
- ret = pSearchPathW(NULL, kernel32dllW, NULL, sizeof(buffW)/sizeof(WCHAR), buffW, NULL);
+ ret = pSearchPathW(NULL, kernel32dllW, NULL, ARRAY_SIZE(buffW), buffW, NULL);
ok(ret && ret == lstrlenW(buffW), "got %d\n", ret);
ok(lstrcmpW(buffW, path2W), "got wrong path %s, %s\n", wine_dbgstr_w(buffW), wine_dbgstr_w(path2W));
/* path is built using on manifest file name */
- ret = pSearchPathW(NULL, ole32W, NULL, sizeof(buffW)/sizeof(WCHAR), buffW, NULL);
+ ret = pSearchPathW(NULL, ole32W, NULL, ARRAY_SIZE(buffW), buffW, NULL);
ok(ret && ret == lstrlenW(buffW), "got %d\n", ret);
ret = pDeactivateActCtx(0, cookie);
@@ -2010,7 +2010,7 @@ static void test_GetFullPathNameA(void)
{"", MAX_PATH, output, &filepart},
};
- for (i = 0; i < sizeof(invalid_parameters)/sizeof(invalid_parameters[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(invalid_parameters); i++)
{
SetLastError(0xdeadbeef);
strcpy(output, "deadbeef");
@@ -2040,7 +2040,7 @@ static void test_GetFullPathNameA(void)
{ "c:\\\x83\x8f\x83\x43\x83\x93\\wine.c", "wine.c" },
{ "c:\\demo\\\x97\xa0\x95\x5c", "\x97\xa0\x95\x5c" }
};
- for (i = 0; i < sizeof(testset)/sizeof(testset[0]); i++) {
+ for (i = 0; i < ARRAY_SIZE(testset); i++) {
ret = GetFullPathNameA(testset[i].input, sizeof(output),
output, &filepart);
ok(ret, "[%d] GetFullPathName error %u\n", i, GetLastError());
@@ -2088,7 +2088,7 @@ static void test_GetFullPathNameW(void)
return;
}
- for (i = 0; i < sizeof(invalid_parameters)/sizeof(invalid_parameters[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(invalid_parameters); i++)
{
SetLastError(0xdeadbeef);
lstrcpyW(output, deadbeefW);
@@ -2261,7 +2261,7 @@ static void test_CheckNameLegalDOS8Dot3(void)
br = pCheckNameLegalDOS8Dot3A("testtest.txt", NULL, 0, NULL, NULL);
ok(br == FALSE, "CheckNameLegalDOS8Dot3A should have failed\n");
- for(i = 0; i < sizeof(cases)/sizeof(*cases); ++i){
+ for(i = 0; i < ARRAY_SIZE(cases); ++i){
br = pCheckNameLegalDOS8Dot3W(cases[i].name, NULL, 0, &has_space, &is_legal);
ok(br == TRUE, "CheckNameLegalDOS8Dot3W failed for %s\n", wine_dbgstr_w(cases[i].name));
ok(is_legal == cases[i].should_be_legal, "Got wrong legality for %s\n", wine_dbgstr_w(cases[i].name));
diff --git a/dlls/kernel32/tests/pipe.c b/dlls/kernel32/tests/pipe.c
index 13570b032c..0e6c7a3ae8 100644
--- a/dlls/kernel32/tests/pipe.c
+++ b/dlls/kernel32/tests/pipe.c
@@ -2381,9 +2381,8 @@ static void test_NamedPipeHandleState(void)
* on a local pipe.
*/
SetLastError(0xdeadbeef);
- ret = GetNamedPipeHandleStateA(server, &state, &instances,
- &maxCollectionCount, &collectDataTimeout, userName,
- sizeof(userName) / sizeof(userName[0]));
+ ret = GetNamedPipeHandleStateA(server, &state, &instances, &maxCollectionCount,
+ &collectDataTimeout, userName, ARRAY_SIZE(userName));
todo_wine
ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER,
"expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c
index b1a453998c..0eb113b635 100644
--- a/dlls/kernel32/tests/process.c
+++ b/dlls/kernel32/tests/process.c
@@ -423,7 +423,7 @@ static void doChild(const char* file, const char* option)
childPrintf(hFile, "[Misc]\n");
if (GetCurrentDirectoryA(sizeof(bufA), bufA))
childPrintf(hFile, "CurrDirA=%s\n", encodeA(bufA));
- if (GetCurrentDirectoryW(sizeof(bufW) / sizeof(bufW[0]), bufW))
+ if (GetCurrentDirectoryW(ARRAY_SIZE(bufW), bufW))
childPrintf(hFile, "CurrDirW=%s\n", encodeW(bufW));
childPrintf(hFile, "\n");
@@ -1987,14 +1987,14 @@ static void test_QueryFullProcessImageNameW(void)
ok(GetModuleFileNameW(NULL, module_name, 1024), "GetModuleFileNameW(NULL, ...) failed\n");
/* GetCurrentProcess pseudo-handle */
- size = sizeof(buf) / sizeof(buf[0]);
+ size = ARRAY_SIZE(buf);
expect_eq_d(TRUE, pQueryFullProcessImageNameW(GetCurrentProcess(), 0, buf, &size));
expect_eq_d(lstrlenW(buf), size);
expect_eq_ws_i(buf, module_name);
hSelf = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, GetCurrentProcessId());
/* Real handle */
- size = sizeof(buf) / sizeof(buf[0]);
+ size = ARRAY_SIZE(buf);
expect_eq_d(TRUE, pQueryFullProcessImageNameW(hSelf, 0, buf, &size));
expect_eq_d(lstrlenW(buf), size);
expect_eq_ws_i(buf, module_name);
@@ -2032,7 +2032,7 @@ static void test_QueryFullProcessImageNameW(void)
/* native path */
- size = sizeof(buf) / sizeof(buf[0]);
+ size = ARRAY_SIZE(buf);
expect_eq_d(TRUE, pQueryFullProcessImageNameW(hSelf, PROCESS_NAME_NATIVE, buf, &size));
expect_eq_d(lstrlenW(buf), size);
ok(buf[0] == '\\', "NT path should begin with '\\'\n");
@@ -2040,7 +2040,7 @@ static void test_QueryFullProcessImageNameW(void)
module_name[2] = '\0';
*device = '\0';
- size = QueryDosDeviceW(module_name, device, sizeof(device)/sizeof(device[0]));
+ size = QueryDosDeviceW(module_name, device, ARRAY_SIZE(device));
ok(size, "QueryDosDeviceW failed: le=%u\n", GetLastError());
len = lstrlenW(device);
ok(size >= len+2, "expected %d to be greater than %d+2 = strlen(%s)\n", size, len, wine_dbgstr_w(device));
diff --git a/dlls/kernel32/tests/profile.c b/dlls/kernel32/tests/profile.c
index c5c77025b2..4dbe129b76 100644
--- a/dlls/kernel32/tests/profile.c
+++ b/dlls/kernel32/tests/profile.c
@@ -71,7 +71,7 @@ static void test_profile_int(void)
{ SECTION, KEY, "B4294967297", TESTFILE, -1, 0 , 0},
{ SECTION, KEY, "B4294967297", TESTFILE, 1, 0 , 0},
};
- int i, num_test = (sizeof(profileInt)/sizeof(struct _profileInt));
+ int i, num_test = ARRAY_SIZE(profileInt);
UINT res;
DeleteFileA( TESTFILE);
@@ -144,8 +144,7 @@ static void test_profile_string(void)
CloseHandle( h);
/* works only in unicode, ascii crashes */
- ret=GetPrivateProfileStringW(emptyW, keyW, emptyW, bufW,
- sizeof(bufW)/sizeof(bufW[0]), TESTFILE2W);
+ ret=GetPrivateProfileStringW(emptyW, keyW, emptyW, bufW, ARRAY_SIZE(bufW), TESTFILE2W);
todo_wine
ok(ret == 13, "expected 13, got %u\n", ret);
todo_wine
@@ -153,8 +152,7 @@ static void test_profile_string(void)
wine_dbgstr_w(valsectionW), wine_dbgstr_w(bufW) );
/* works only in unicode, ascii crashes */
- ret=GetPrivateProfileStringW(sW, emptyW, emptyW, bufW,
- sizeof(bufW)/sizeof(bufW[0]), TESTFILE2W);
+ ret=GetPrivateProfileStringW(sW, emptyW, emptyW, bufW, ARRAY_SIZE(bufW), TESTFILE2W);
todo_wine
ok(ret == 10, "expected 10, got %u\n", ret);
todo_wine
@@ -394,7 +392,7 @@ static void test_profile_existing(void)
HANDLE h = 0;
char buffer[MAX_PATH];
- for (i=0; i < sizeof(pe)/sizeof(pe[0]); i++)
+ for (i=0; i < ARRAY_SIZE(pe); i++)
{
h = CreateFileA(testfile1, pe[i].dwDesiredAccess, pe[i].dwShareMode, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
@@ -434,7 +432,7 @@ static void test_profile_existing(void)
ok( WriteFile( h, buffer, strlen(buffer), &size, NULL ), "failed to write\n" );
CloseHandle( h );
- for (i=0; i < sizeof(pe)/sizeof(pe[0]); i++)
+ for (i=0; i < ARRAY_SIZE(pe); i++)
{
h = CreateFileA(testfile2, pe[i].dwDesiredAccess, pe[i].dwShareMode, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
diff --git a/dlls/kernel32/tests/resource.c b/dlls/kernel32/tests/resource.c
index 74066cfba3..b3aaed6840 100644
--- a/dlls/kernel32/tests/resource.c
+++ b/dlls/kernel32/tests/resource.c
@@ -478,7 +478,7 @@ START_TEST(resource)
update_empty_exe();
- for(i=0; i < sizeof( sec_variants ) / sizeof( sec_variants[0] ); i++)
+ for(i=0; i < ARRAY_SIZE(sec_variants); i++)
{
const struct _sec_variants *sec = &sec_variants[i];
build_exe( &sec->build );
diff --git a/dlls/kernel32/tests/thread.c b/dlls/kernel32/tests/thread.c
index 5fb19f0992..b69d2eb371 100644
--- a/dlls/kernel32/tests/thread.c
+++ b/dlls/kernel32/tests/thread.c
@@ -1933,7 +1933,7 @@ static void test_thread_info(void)
return;
}
- for (i = 0; i < sizeof(info_size)/sizeof(info_size[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(info_size); i++)
{
memset(buf, 0, sizeof(buf));
diff --git a/dlls/kernel32/tests/version.c b/dlls/kernel32/tests/version.c
index eb78a383d2..ebda2db1f1 100644
--- a/dlls/kernel32/tests/version.c
+++ b/dlls/kernel32/tests/version.c
@@ -606,7 +606,7 @@ static void test_VerifyVersionInfo(void)
}
}
- for (i = 0; i < sizeof(verify_version_tests)/sizeof(verify_version_tests[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(verify_version_tests); i++)
{
struct verify_version_test *test = &verify_version_tests[i];
DWORD srcinfo = test->srcinfo;
diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c
index 4a449fd82b..a343fa435c 100644
--- a/dlls/kernel32/tests/virtual.c
+++ b/dlls/kernel32/tests/virtual.c
@@ -1716,7 +1716,7 @@ static void test_CreateFileMapping(void)
file[2] = CreateFileA( path, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0 );
ok( file[2] != INVALID_HANDLE_VALUE, "CreateFile error %u\n", GetLastError() );
- for (i = 0; i < sizeof(sec_flag_tests) / sizeof(sec_flag_tests[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(sec_flag_tests); i++)
{
DWORD flags = sec_flag_tests[i].flags;
DWORD perm = sec_flag_tests[i].file == 2 ? PAGE_READONLY : PAGE_READWRITE;
@@ -3333,7 +3333,7 @@ static void test_VirtualProtect(void)
ok(status == STATUS_SUCCESS, "NtProtectVirtualMemory should succeed, got %08x\n", status);
ok(old_prot == PAGE_NOACCESS, "got %#x != expected PAGE_NOACCESS\n", old_prot);
- for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(td); i++)
{
SetLastError(0xdeadbeef);
ret = VirtualQuery(base, &info, sizeof(info));
@@ -3499,7 +3499,7 @@ static void test_VirtualAlloc_protection(void)
DWORD ret, i;
MEMORY_BASIC_INFORMATION info;
- for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(td); i++)
{
SetLastError(0xdeadbeef);
base = VirtualAlloc(0, si.dwPageSize, MEM_COMMIT, td[i].prot);
@@ -3602,7 +3602,7 @@ static void test_CreateFileMapping_protection(void)
SetFilePointer(hfile, si.dwPageSize, NULL, FILE_BEGIN);
SetEndOfFile(hfile);
- for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(td); i++)
{
SetLastError(0xdeadbeef);
hmap = CreateFileMappingW(hfile, NULL, td[i].prot | SEC_COMMIT, 0, si.dwPageSize, NULL);
@@ -3674,7 +3674,7 @@ static void test_CreateFileMapping_protection(void)
hmap = CreateFileMappingW(hfile, NULL, alloc_prot, 0, si.dwPageSize, NULL);
ok(hmap != 0, "%d: CreateFileMapping error %d\n", i, GetLastError());
- for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(td); i++)
{
SetLastError(0xdeadbeef);
base = MapViewOfFile(hmap, FILE_MAP_READ | FILE_MAP_WRITE | (page_exec_supported ? FILE_MAP_EXECUTE : 0), 0, 0, 0);
@@ -3941,7 +3941,7 @@ static void test_mapping( HANDLE hfile, DWORD sec_flags )
BOOL anon_mapping = (hfile == INVALID_HANDLE_VALUE);
trace( "testing %s mapping flags %08x\n", anon_mapping ? "anonymous" : "file", sec_flags );
- for (i = 0; i < sizeof(page_prot)/sizeof(page_prot[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(page_prot); i++)
{
SetLastError(0xdeadbeef);
hmap = CreateFileMappingW(hfile, NULL, page_prot[i] | sec_flags, 0, si.dwPageSize, NULL);
@@ -3998,7 +3998,7 @@ static void test_mapping( HANDLE hfile, DWORD sec_flags )
ok(hmap != 0, "%d: CreateFileMapping(%04x) error %d\n", i, page_prot[i], GetLastError());
- for (j = 0; j < sizeof(view)/sizeof(view[0]); j++)
+ for (j = 0; j < ARRAY_SIZE(view); j++)
{
nt_base = map_view_of_file(hmap, view[j].access);
if (nt_base)
@@ -4085,7 +4085,7 @@ static void test_mapping( HANDLE hfile, DWORD sec_flags )
prev_prot = info.Protect;
alloc_prot = info.AllocationProtect;
- for (k = 0; k < sizeof(page_prot)/sizeof(page_prot[0]); k++)
+ for (k = 0; k < ARRAY_SIZE(page_prot); k++)
{
/*trace("map %#x, view %#x, requested prot %#x\n", page_prot[i], view[j].prot, page_prot[k]);*/
DWORD actual_prot = (sec_flags & SEC_IMAGE) ? map_prot_no_write(page_prot[k]) : page_prot[k];
@@ -4118,7 +4118,7 @@ static void test_mapping( HANDLE hfile, DWORD sec_flags )
}
}
- for (k = 0; k < sizeof(page_prot)/sizeof(page_prot[0]); k++)
+ for (k = 0; k < ARRAY_SIZE(page_prot); k++)
{
/*trace("map %#x, view %#x, requested prot %#x\n", page_prot[i], view[j].prot, page_prot[k]);*/
SetLastError(0xdeadbeef);
@@ -4172,7 +4172,7 @@ static void test_mapping( HANDLE hfile, DWORD sec_flags )
prev_prot = info.Protect;
alloc_prot = info.AllocationProtect;
- for (k = 0; k < sizeof(page_prot)/sizeof(page_prot[0]); k++)
+ for (k = 0; k < ARRAY_SIZE(page_prot); k++)
{
DWORD actual_prot = (sec_flags & SEC_IMAGE) ? map_prot_no_write(page_prot[k]) : page_prot[k];
SetLastError(0xdeadbeef);
diff --git a/dlls/kernel32/tests/volume.c b/dlls/kernel32/tests/volume.c
index f673fd2917..2de66cdfd0 100644
--- a/dlls/kernel32/tests/volume.c
+++ b/dlls/kernel32/tests/volume.c
@@ -251,7 +251,7 @@ static void test_GetVolumeNameForVolumeMountPointW(void)
{
BOOL ret;
WCHAR volume[MAX_PATH], path[] = {'c',':','\\',0};
- DWORD len = sizeof(volume) / sizeof(WCHAR);
+ DWORD len = ARRAY_SIZE(volume);
/* not present before w2k */
if (!pGetVolumeNameForVolumeMountPointW) {
@@ -795,7 +795,7 @@ static void test_GetVolumePathNameA(void)
ret = SetEnvironmentVariableA( "CurrentDrive", cwd );
ok( ret, "Failed to set an environment variable for the current working drive.\n" );
- for (i=0; i<sizeof(test_paths)/sizeof(test_paths[0]); i++)
+ for (i=0; i<ARRAY_SIZE(test_paths); i++)
{
BOOL broken_ret = test_paths[i].broken_error == NO_ERROR;
char *output = (test_paths[i].path_name != NULL ? volume_path : NULL);
--
2.14.4
2
2