Hans Leidekker : mscms: Set last error on insufficient buffer in EnumColorProfilesA/W.
Alexandre Julliard
julliard at winehq.org
Mon Feb 25 15:10:34 CST 2019
Module: wine
Branch: master
Commit: 0a1362498d13bf000f768415945d3bac4e98db4c
URL: https://source.winehq.org/git/wine.git/?a=commit;h=0a1362498d13bf000f768415945d3bac4e98db4c
Author: Hans Leidekker <hans at codeweavers.com>
Date: Mon Feb 25 09:12:38 2019 +0100
mscms: Set last error on insufficient buffer in EnumColorProfilesA/W.
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/mscms/profile.c | 12 ++++++++++--
dlls/mscms/tests/profile.c | 33 ++++++++++++++++++---------------
2 files changed, 28 insertions(+), 17 deletions(-)
diff --git a/dlls/mscms/profile.c b/dlls/mscms/profile.c
index 6bc55e7..d45ac4a 100644
--- a/dlls/mscms/profile.c
+++ b/dlls/mscms/profile.c
@@ -918,7 +918,11 @@ BOOL WINAPI EnumColorProfilesA( PCSTR machine, PENUMTYPEA record, PBYTE buffer,
*p = 0;
ret = TRUE;
}
- else ret = FALSE;
+ else
+ {
+ SetLastError( ERROR_INSUFFICIENT_BUFFER );
+ ret = FALSE;
+ }
*size = totalsize;
if (number) *number = count;
@@ -1044,7 +1048,11 @@ BOOL WINAPI EnumColorProfilesW( PCWSTR machine, PENUMTYPEW record, PBYTE buffer,
*p = 0;
ret = TRUE;
}
- else ret = FALSE;
+ else
+ {
+ SetLastError( ERROR_INSUFFICIENT_BUFFER );
+ ret = FALSE;
+ }
*size = totalsize;
if (number) *number = count;
diff --git a/dlls/mscms/tests/profile.c b/dlls/mscms/tests/profile.c
index c4ea7f2..2ef2012 100644
--- a/dlls/mscms/tests/profile.c
+++ b/dlls/mscms/tests/profile.c
@@ -660,35 +660,36 @@ static void test_EnumColorProfilesA( char *standardprofile )
record.dwDataColorSpace = SPACE_RGB;
total = 0;
+ SetLastError( 0xdeadbeef );
ret = pEnumColorProfilesA( NULL, &record, NULL, &total, &number );
- ok( !ret, "EnumColorProfilesA() failed (%d)\n", GetLastError() );
+ ok( !ret, "EnumColorProfilesA succeeded\n" );
+ if (have_color_profile) ok( GetLastError() == ERROR_INSUFFICIENT_BUFFER, "got %u\n", GetLastError() );
buffer = HeapAlloc( GetProcessHeap(), 0, total );
size = total;
ret = pEnumColorProfilesA( machine, &record, buffer, &size, &number );
- ok( !ret, "EnumColorProfilesA() succeeded (%d)\n", GetLastError() );
+ ok( !ret, "EnumColorProfilesA succeeded\n" );
ret = pEnumColorProfilesA( NULL, NULL, buffer, &size, &number );
- ok( !ret, "EnumColorProfilesA() succeeded (%d)\n", GetLastError() );
+ ok( !ret, "EnumColorProfilesA succeeded\n" );
ret = pEnumColorProfilesA( NULL, &record, buffer, NULL, &number );
- ok( !ret, "EnumColorProfilesA() succeeded (%d)\n", GetLastError() );
+ ok( !ret, "EnumColorProfilesA succeeded\n" );
ret = pEnumColorProfilesA( NULL, &record, buffer, &size, &number );
todo_wine_if (!have_color_profile)
- ok( ret, "EnumColorProfilesA() failed (%d)\n", GetLastError() );
+ ok( ret, "EnumColorProfilesA failed %u\n", GetLastError() );
size = 0;
-
ret = pEnumColorProfilesA( NULL, &record, buffer, &size, &number );
- ok( !ret, "EnumColorProfilesA() succeeded (%d)\n", GetLastError() );
+ ok( !ret, "EnumColorProfilesA succeeded\n" );
/* Functional checks */
size = total;
ret = pEnumColorProfilesA( NULL, &record, buffer, &size, &number );
todo_wine_if (!have_color_profile)
- ok( ret, "EnumColorProfilesA() failed (%d)\n", GetLastError() );
+ ok( ret, "EnumColorProfilesA failed %u\n", GetLastError() );
HeapFree( GetProcessHeap(), 0, buffer );
}
@@ -710,34 +711,36 @@ static void test_EnumColorProfilesW( WCHAR *standardprofileW )
record.dwDataColorSpace = SPACE_RGB;
total = 0;
+ SetLastError( 0xdeadbeef );
ret = pEnumColorProfilesW( NULL, &record, NULL, &total, &number );
- ok( !ret, "EnumColorProfilesW() failed (%d)\n", GetLastError() );
+ ok( !ret, "EnumColorProfilesW succeeded\n" );
+ if (have_color_profile) ok( GetLastError() == ERROR_INSUFFICIENT_BUFFER, "got %u\n", GetLastError() );
buffer = HeapAlloc( GetProcessHeap(), 0, total * sizeof(WCHAR) );
size = total;
ret = pEnumColorProfilesW( machineW, &record, buffer, &size, &number );
- ok( !ret, "EnumColorProfilesW() succeeded (%d)\n", GetLastError() );
+ ok( !ret, "EnumColorProfilesW succeeded\n" );
ret = pEnumColorProfilesW( NULL, NULL, buffer, &size, &number );
- ok( !ret, "EnumColorProfilesW() succeeded (%d)\n", GetLastError() );
+ ok( !ret, "EnumColorProfilesW succeeded\n" );
ret = pEnumColorProfilesW( NULL, &record, buffer, NULL, &number );
- ok( !ret, "EnumColorProfilesW() succeeded (%d)\n", GetLastError() );
+ ok( !ret, "EnumColorProfilesW succeeded\n" );
ret = pEnumColorProfilesW( NULL, &record, buffer, &size, &number );
todo_wine_if (!have_color_profile)
- ok( ret, "EnumColorProfilesW() failed (%d)\n", GetLastError() );
+ ok( ret, "EnumColorProfilesW failed %u\n", GetLastError() );
size = 0;
ret = pEnumColorProfilesW( NULL, &record, buffer, &size, &number );
- ok( !ret, "EnumColorProfilesW() succeeded (%d)\n", GetLastError() );
+ ok( !ret, "EnumColorProfilesW succeeded\n" );
/* Functional checks */
size = total;
ret = pEnumColorProfilesW( NULL, &record, buffer, &size, &number );
todo_wine_if (!have_color_profile)
- ok( ret, "EnumColorProfilesW() failed (%d)\n", GetLastError() );
+ ok( ret, "EnumColorProfilesW failed %u\n", GetLastError() );
HeapFree( GetProcessHeap(), 0, buffer );
}
More information about the wine-cvs
mailing list