Wine-devel
Threads by month
- ----- 2026 -----
- 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
January 2019
- 68 participants
- 552 discussions
[PATCH 3/5] wbemprox: Include extended model and family fields in processor properties.
by Hans Leidekker 25 Jan '19
by Hans Leidekker 25 Jan '19
25 Jan '19
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
dlls/wbemprox/builtin.c | 26 ++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)
diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c
index 87cdc0a0e9..620d64e2e6 100644
--- a/dlls/wbemprox/builtin.c
+++ b/dlls/wbemprox/builtin.c
@@ -2849,6 +2849,20 @@ static const WCHAR *get_osarchitecture(void)
if (info.u.s.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) return os_64bitW;
return os_32bitW;
}
+static unsigned int get_processor_model( unsigned int reg0, unsigned int *stepping, unsigned int *family )
+{
+ unsigned int model, family_id = (reg0 & (0x0f << 8)) >> 8;
+
+ model = (reg0 & (0x0f << 4)) >> 4;
+ if (family_id == 6 || family_id == 15) model |= (reg0 & (0x0f << 16)) >> 12;
+ if (family)
+ {
+ *family = family_id;
+ if (family_id == 15) *family += (reg0 & (0xff << 20)) >> 20;
+ }
+ *stepping = reg0 & 0x0f;
+ return model;
+}
static void get_processor_caption( WCHAR *caption )
{
static const WCHAR fmtW[] =
@@ -2857,19 +2871,23 @@ static void get_processor_caption( WCHAR *caption )
static const WCHAR x86W[] = {'x','8','6',0};
static const WCHAR intel64W[] = {'I','n','t','e','l','6','4',0};
const WCHAR *arch = (get_osarchitecture() == os_32bitW) ? x86W : intel64W;
- unsigned int regs[4] = {0, 0, 0, 0};
+ unsigned int regs[4] = {0, 0, 0, 0}, family, model, stepping;
do_cpuid( 1, regs );
- sprintfW( caption, fmtW, arch, (regs[0] & (15 << 8)) >> 8, (regs[0] & (15 << 4)) >> 4, regs[0] & 15 );
+
+ model = get_processor_model( regs[0], &stepping, &family );
+ sprintfW( caption, fmtW, arch, family, model, stepping );
}
static void get_processor_version( WCHAR *version )
{
static const WCHAR fmtW[] =
{'M','o','d','e','l',' ','%','u',',',' ','S','t','e','p','p','i','n','g',' ','%','u',0};
- unsigned int regs[4] = {0, 0, 0, 0};
+ unsigned int regs[4] = {0, 0, 0, 0}, model, stepping;
do_cpuid( 1, regs );
- sprintfW( version, fmtW, (regs[0] & (15 << 4)) >> 4, regs[0] & 15 );
+
+ model = get_processor_model( regs[0], &stepping, NULL );
+ sprintfW( version, fmtW, model, stepping );
}
static UINT16 get_processor_revision(void)
{
--
2.20.1
1
0
25 Jan '19
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
dlls/wbemprox/builtin.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c
index 7893aa12b1..87cdc0a0e9 100644
--- a/dlls/wbemprox/builtin.c
+++ b/dlls/wbemprox/builtin.c
@@ -2907,6 +2907,7 @@ static void get_processor_manufacturer( WCHAR *manufacturer )
static void get_processor_name( WCHAR *name )
{
unsigned int regs[4] = {0, 0, 0, 0};
+ int i;
do_cpuid( 0x80000000, regs );
if (regs[0] >= 0x80000004)
@@ -2918,6 +2919,7 @@ static void get_processor_name( WCHAR *name )
do_cpuid( 0x80000004, regs );
regs_to_str( regs, 16, name + 32 );
}
+ for (i = strlenW(name) - 1; i >= 0 && name[i] == ' '; i--) name[i] = 0;
}
static UINT get_processor_currentclockspeed( UINT index )
{
--
2.20.1
1
0
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
dlls/wbemprox/builtin.c | 49 ++++++++++++++++++++++++++++++-----------
1 file changed, 36 insertions(+), 13 deletions(-)
diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c
index d3efd99069..7893aa12b1 100644
--- a/dlls/wbemprox/builtin.c
+++ b/dlls/wbemprox/builtin.c
@@ -2804,21 +2804,44 @@ done:
return status;
}
-static inline void do_cpuid( unsigned int ax, unsigned int *p )
-{
-#ifdef __i386__
-#ifdef _MSC_VER
- __cpuid(p, ax);
+extern void do_cpuid( unsigned int ax, unsigned int *p );
+#if defined(_MSC_VER)
+void do_cpuid( unsigned int ax, unsigned int *p )
+{
+ __cpuid( p, ax );
+}
+#elif defined(__i386__)
+__ASM_GLOBAL_FUNC( do_cpuid,
+ "pushl %esi\n\t"
+ "pushl %ebx\n\t"
+ "movl 12(%esp),%eax\n\t"
+ "movl 16(%esp),%esi\n\t"
+ "cpuid\n\t"
+ "movl %eax,(%esi)\n\t"
+ "movl %ebx,4(%esi)\n\t"
+ "movl %ecx,8(%esi)\n\t"
+ "movl %edx,12(%esi)\n\t"
+ "popl %ebx\n\t"
+ "popl %esi\n\t"
+ "ret" )
+#elif defined(__x86_64__)
+__ASM_GLOBAL_FUNC( do_cpuid,
+ "pushq %rbx\n\t"
+ "movl %edi,%eax\n\t"
+ "cpuid\n\t"
+ "movl %eax,(%rsi)\n\t"
+ "movl %ebx,4(%rsi)\n\t"
+ "movl %ecx,8(%rsi)\n\t"
+ "movl %edx,12(%rsi)\n\t"
+ "popq %rbx\n\t"
+ "ret" )
#else
- __asm__("pushl %%ebx\n\t"
- "cpuid\n\t"
- "movl %%ebx, %%esi\n\t"
- "popl %%ebx"
- : "=a" (p[0]), "=S" (p[1]), "=c" (p[2]), "=d" (p[3])
- : "0" (ax));
-#endif
-#endif
+void do_cpuid( unsigned int ax, unsigned int *p )
+{
+ FIXME("\n");
}
+#endif
+
static const WCHAR *get_osarchitecture(void)
{
SYSTEM_INFO info;
--
2.20.1
1
0
25 Jan '19
Signed-off-by: Józef Kucia <jkucia(a)codeweavers.com>
---
dlls/wined3d/wined3d_private.h | 7 -------
include/wine/wined3d.h | 7 +++++++
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 0df3f2ab2a5e..7b265f366285 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -4582,13 +4582,6 @@ static inline BOOL is_rasterization_disabled(const struct wined3d_shader *geomet
&& geometry_shader->u.gs.so_desc.rasterizer_stream_idx == WINED3D_NO_RASTERIZER_STREAM;
}
-static inline int wined3d_bit_scan(unsigned int *x)
-{
- int bit_offset = ffs(*x) - 1;
- *x ^= 1u << bit_offset;
- return bit_offset;
-}
-
static inline DWORD wined3d_extract_bits(const DWORD *bitstream,
unsigned int offset, unsigned int count)
{
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index b0b1abc508e6..2a8afe8fca6f 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -2782,6 +2782,13 @@ static inline unsigned int wined3d_log2i(unsigned int x)
#endif
}
+static inline int wined3d_bit_scan(unsigned int *x)
+{
+ int bit_offset = ffs(*x) - 1;
+ *x ^= 1u << bit_offset;
+ return bit_offset;
+}
+
static inline void wined3d_box_set(struct wined3d_box *box, unsigned int left, unsigned int top,
unsigned int right, unsigned int bottom, unsigned int front, unsigned int back)
{
--
2.19.2
5
4
2
1
24 Jan '19
Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com>
---
dlls/hal/Makefile.in | 1 +
dlls/ntoskrnl.exe/Makefile.in | 2 +-
dlls/ntoskrnl.exe/ntoskrnl.c | 10 ----------
dlls/ntoskrnl.exe/sync.c | 11 +++++++++++
4 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/dlls/hal/Makefile.in b/dlls/hal/Makefile.in
index 8efaf55512..cc2620e921 100644
--- a/dlls/hal/Makefile.in
+++ b/dlls/hal/Makefile.in
@@ -1,4 +1,5 @@
MODULE = hal.dll
+IMPORTLIB = hal
C_SRCS = \
hal.c
diff --git a/dlls/ntoskrnl.exe/Makefile.in b/dlls/ntoskrnl.exe/Makefile.in
index 8cafaada85..3861d26a4a 100644
--- a/dlls/ntoskrnl.exe/Makefile.in
+++ b/dlls/ntoskrnl.exe/Makefile.in
@@ -1,6 +1,6 @@
MODULE = ntoskrnl.exe
IMPORTLIB = ntoskrnl
-IMPORTS = advapi32
+IMPORTS = advapi32 hal
DELAYIMPORTS = setupapi user32
C_SRCS = \
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index a48b9e39c2..2a061f3338 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -785,16 +785,6 @@ void WINAPI IoAcquireCancelSpinLock(PKIRQL irql)
FIXME("(%p): stub\n", irql);
}
-
-/***********************************************************************
- * IoReleaseCancelSpinLock (NTOSKRNL.EXE.@)
- */
-void WINAPI IoReleaseCancelSpinLock(KIRQL irql)
-{
- FIXME("(%u): stub\n", irql);
-}
-
-
/***********************************************************************
* IoAllocateDriverObjectExtension (NTOSKRNL.EXE.@)
*/
diff --git a/dlls/ntoskrnl.exe/sync.c b/dlls/ntoskrnl.exe/sync.c
index 74e84a6505..36282fec67 100644
--- a/dlls/ntoskrnl.exe/sync.c
+++ b/dlls/ntoskrnl.exe/sync.c
@@ -413,3 +413,14 @@ KIRQL WINAPI KeAcquireSpinLockRaiseToDpc( KSPIN_LOCK *lock )
return 0;
}
#endif
+
+static KSPIN_LOCK cancel_lock;
+
+/***********************************************************************
+ * IoReleaseCancelSpinLock (NTOSKRNL.EXE.@)
+ */
+void WINAPI IoReleaseCancelSpinLock( KIRQL irql )
+{
+ TRACE("irql %u.\n", irql);
+ KeReleaseSpinLock( &cancel_lock, irql );
+}
--
2.17.1
1
3
24 Jan '19
My first patch, I could use a review. Thanks.
---
dlls/crypt32/cert.c | 59 +++++++++++++++++++++++++++++++++++++++
dlls/crypt32/crypt32.spec | 1 +
include/wincrypt.h | 4 +++
3 files changed, 64 insertions(+)
diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c
index 2d4ce8c10c..82d06e2e33 100644
--- a/dlls/crypt32/cert.c
+++ b/dlls/crypt32/cert.c
@@ -2213,6 +2213,65 @@ BOOL WINAPI CryptHashCertificate(HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid,
return ret;
}
+BOOL WINAPI CryptHashCertificate2(LPCWSTR pwszCNGHashAlgid, DWORD dwFlags,
+ void *pvReserved, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash,
+ DWORD *pcbComputedHash)
+{
+ BCRYPT_HASH_HANDLE hash = NULL;
+ BCRYPT_ALG_HANDLE alg = NULL;
+ NTSTATUS status;
+ DWORD hash_len;
+ DWORD hash_len_size;
+
+ TRACE("(%s, %08x, %p, %p, %d, %p, %p)\n", debugstr_w(pwszCNGHashAlgid),
+ dwFlags, pvReserved, pbEncoded, cbEncoded, pbComputedHash, pcbComputedHash);
+
+ if (pcbComputedHash == NULL)
+ {
+ status = STATUS_INVALID_PARAMETER;
+ goto done;
+ }
+
+ if ((status = BCryptOpenAlgorithmProvider(&alg, pwszCNGHashAlgid, NULL, 0)))
+ goto done;
+
+ if ((status = BCryptCreateHash(alg, &hash, NULL, 0, NULL, 0, 0)))
+ goto done;
+
+ if ((status = BCryptGetProperty(hash, BCRYPT_HASH_LENGTH, (BYTE *)&hash_len, sizeof(hash_len), &hash_len_size, 0)))
+ goto done;
+
+ if (pbComputedHash == NULL)
+ {
+ *pcbComputedHash = hash_len;
+ goto done;
+ }
+
+ if (*pcbComputedHash < hash_len)
+ {
+ status = STATUS_INVALID_PARAMETER;
+ goto done;
+ }
+ else
+ {
+ *pcbComputedHash = hash_len;
+ }
+
+ if ((status = BCryptHashData(hash, (BYTE *)pbEncoded, cbEncoded, 0)))
+ goto done;
+
+ if ((status = BCryptFinishHash(hash, pbComputedHash, hash_len, 0)))
+ {
+ goto done;
+ }
+
+done:
+ if (hash) BCryptDestroyHash(hash);
+ if (alg) BCryptCloseAlgorithmProvider(alg, 0);
+ if (status) SetLastError(RtlNtStatusToDosError(status));
+ return status == 0;
+}
+
BOOL WINAPI CryptHashPublicKeyInfo(HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid,
DWORD dwFlags, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo,
BYTE *pbComputedHash, DWORD *pcbComputedHash)
diff --git a/dlls/crypt32/crypt32.spec b/dlls/crypt32/crypt32.spec
index fc32570b52..fa507dfc65 100644
--- a/dlls/crypt32/crypt32.spec
+++ b/dlls/crypt32/crypt32.spec
@@ -136,6 +136,7 @@
@ stdcall CryptGetOIDFunctionAddress(long long str long ptr ptr)
@ stdcall CryptGetOIDFunctionValue(long str str wstr ptr ptr ptr)
@ stdcall CryptHashCertificate(long long long ptr long ptr ptr)
+@ stdcall CryptHashCertificate2(wstr long ptr ptr long ptr ptr)
@ stdcall CryptHashMessage(ptr long long ptr ptr ptr ptr ptr ptr)
@ stdcall CryptHashPublicKeyInfo(long long long long ptr ptr ptr)
@ stdcall CryptHashToBeSigned(ptr long ptr long ptr ptr)
diff --git a/include/wincrypt.h b/include/wincrypt.h
index a1b1305902..cbc76d7f10 100644
--- a/include/wincrypt.h
+++ b/include/wincrypt.h
@@ -4379,6 +4379,10 @@ BOOL WINAPI CryptHashCertificate(HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid,
DWORD dwFlags, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash,
DWORD *pcbComputedHash);
+BOOL WINAPI CryptHashCertificate2(LPCWSTR pwszCNGHashAlgid, DWORD dwFlags,
+ void *pvReserved, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash,
+ DWORD *pcbComputedHash);
+
BOOL WINAPI CryptHashPublicKeyInfo(HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid,
DWORD dwFlags, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo,
BYTE *pbComputedHash, DWORD *pcbComputedHash);
--
2.19.1
3
9
Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com>
---
dlls/msi/tests/db.c | 632 +++++---------------------------------------
1 file changed, 70 insertions(+), 562 deletions(-)
diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c
index d97c350219..da4e3b78c1 100644
--- a/dlls/msi/tests/db.c
+++ b/dlls/msi/tests/db.c
@@ -1021,19 +1021,7 @@ static void test_viewmodify(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "MsiRecordGetString failed\n");
- ok(!lstrcmpA(buffer, "bob"), "Expected bob, got %s\n", buffer);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "MsiRecordGetString failed\n");
- ok(!lstrcmpA(buffer, "7654321"), "Expected 7654321, got %s\n", buffer);
+ check_record(hrec, 3, "1", "bob", "7654321");
/* update the view, non-primary key */
r = MsiRecordSetStringA(hrec, 3, "3141592");
@@ -1070,20 +1058,7 @@ static void test_viewmodify(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "MsiRecordGetString failed\n");
- ok(!lstrcmpA(buffer, "bob"), "Expected bob, got %s\n", buffer);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "MsiRecordGetString failed\n");
- ok(!lstrcmpA(buffer, "3141592"), "Expected 3141592, got %s\n", buffer);
-
+ check_record(hrec, 3, "1", "bob", "3141592");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
@@ -1218,8 +1193,6 @@ static void test_getcolinfo(void)
{
MSIHANDLE hdb, hview = 0, rec = 0;
UINT r;
- DWORD sz;
- char buffer[0x20];
/* create an empty db */
hdb = create_db();
@@ -1236,10 +1209,7 @@ static void test_getcolinfo(void)
rec = 0;
r = MsiViewGetColumnInfo( hview, MSICOLINFO_NAMES, &rec );
ok( r == ERROR_SUCCESS, "failed to get names\n");
- sz = sizeof buffer;
- r = MsiRecordGetStringA(rec, 1, buffer, &sz );
- ok( r == ERROR_SUCCESS, "failed to get string\n");
- ok( !strcmp(buffer,"Name"), "_Tables has wrong column name\n");
+ check_record(rec, 1, "Name");
r = MsiCloseHandle( rec );
ok( r == ERROR_SUCCESS, "failed to close record handle\n");
@@ -1247,10 +1217,7 @@ static void test_getcolinfo(void)
rec = 0;
r = MsiViewGetColumnInfo( hview, MSICOLINFO_TYPES, &rec );
ok( r == ERROR_SUCCESS, "failed to get names\n");
- sz = sizeof buffer;
- r = MsiRecordGetStringA(rec, 1, buffer, &sz );
- ok( r == ERROR_SUCCESS, "failed to get string\n");
- ok( !strcmp(buffer,"s64"), "_Tables has wrong column type\n");
+ check_record(rec, 1, "s64");
r = MsiCloseHandle( rec );
ok( r == ERROR_SUCCESS, "failed to close record handle\n");
@@ -2025,9 +1992,6 @@ static void test_where(void)
MSIHANDLE hdb = 0, rec, view;
LPCSTR query;
UINT r;
- DWORD size;
- CHAR buf[MAX_PATH];
- UINT count;
hdb = create_db();
ok( hdb, "failed to create db\n");
@@ -2068,11 +2032,6 @@ static void test_where(void)
r = do_query(hdb, query, &rec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed: %d\n", r);
check_record(rec, 6, "2", "1", "", "one.cab", "", "");
-
- r = MsiRecordGetInteger(rec, 1);
- ok( 2 == r, "field wrong\n");
- r = MsiRecordGetInteger(rec, 2);
- ok( 1 == r, "field wrong\n");
MsiCloseHandle( rec );
query = "SELECT `DiskId` FROM `Media` WHERE `LastSequence` >= 1 AND DiskId >= 0";
@@ -2084,23 +2043,12 @@ static void test_where(void)
r = MsiViewFetch(view, &rec);
ok( r == ERROR_SUCCESS, "failed to fetch view: %d\n", r );
-
- count = MsiRecordGetFieldCount( rec );
- ok( count == 1, "Expected 1 record fields, got %d\n", count );
-
- size = MAX_PATH;
- r = MsiRecordGetStringA( rec, 1, buf, &size );
- ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
- ok( !lstrcmpA( buf, "2" ), "For (row %d, column 1) expected '%d', got %s\n", 0, 2, buf );
+ check_record(rec, 1, "2");
MsiCloseHandle( rec );
r = MsiViewFetch(view, &rec);
ok( r == ERROR_SUCCESS, "failed to fetch view: %d\n", r );
-
- size = MAX_PATH;
- r = MsiRecordGetStringA( rec, 1, buf, &size );
- ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
- ok( !lstrcmpA( buf, "3" ), "For (row %d, column 1) expected '%d', got %s\n", 1, 3, buf );
+ check_record(rec, 1, "3");
MsiCloseHandle( rec );
r = MsiViewFetch(view, &rec);
@@ -3202,40 +3150,12 @@ static void test_try_transform(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "view fetch failed\n");
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- sz = sizeof buffer;
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "record get string failed\n");
- ok(!lstrcmpA(buffer, "c"), "Expected c, got %s\n", buffer);
-
- r = MsiRecordGetInteger(hrec, 3);
- ok(r == 0x80000000, "Expected 0x80000000, got %d\n", r);
-
- r = MsiRecordGetInteger(hrec, 4);
- ok(r == 5, "Expected 5, got %d\n", r);
-
+ check_record(hrec, 4, "1", "c", "", "5");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "view fetch failed\n");
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- sz = sizeof buffer;
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "record get string failed\n");
- ok(!lstrcmpA(buffer, "b"), "Expected b, got %s\n", buffer);
-
- r = MsiRecordGetInteger(hrec, 3);
- ok(r == 0x80000000, "Expected 0x80000000, got %d\n", r);
-
- r = MsiRecordGetInteger(hrec, 4);
- ok(r == 0x80000000, "Expected 0x80000000, got %d\n", r);
-
+ check_record(hrec, 4, "2", "b", "", "");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -3748,8 +3668,6 @@ static void test_temporary_table(void)
MSIHANDLE hdb = 0, view = 0, rec;
const char *query;
UINT r;
- char buf[0x10];
- DWORD sz;
cond = MsiDatabaseIsTablePersistentA(0, NULL);
ok( cond == MSICONDITION_ERROR, "wrong return condition\n");
@@ -3828,18 +3746,9 @@ static void test_temporary_table(void)
ok(r == ERROR_SUCCESS, "failed to query table\n");
r = MsiViewGetColumnInfo(view, MSICOLINFO_TYPES, &rec);
ok(r == ERROR_SUCCESS, "failed to get column info\n");
-
- sz = sizeof buf;
- r = MsiRecordGetStringA(rec, 1, buf, &sz);
- ok(r == ERROR_SUCCESS, "failed to get string\n");
- ok( 0 == strcmp("G255", buf), "wrong column type\n");
-
- sz = sizeof buf;
- r = MsiRecordGetStringA(rec, 2, buf, &sz);
- ok(r == ERROR_SUCCESS, "failed to get string\n");
- ok( 0 == strcmp("j2", buf), "wrong column type\n");
-
+ check_record(rec, 2, "G255", "j2");
MsiCloseHandle( rec );
+
MsiViewClose( view );
MsiCloseHandle( view );
@@ -4152,9 +4061,7 @@ static void test_integers(void)
static void test_update(void)
{
MSIHANDLE hdb = 0, view = 0, rec = 0;
- CHAR result[MAX_PATH];
const char *query;
- DWORD size;
UINT r;
/* just MsiOpenDatabase should not create a file */
@@ -4253,22 +4160,12 @@ static void test_update(void)
r = MsiViewFetch(view, &rec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(rec, 1, result, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record(rec, 1, "this is text");
MsiCloseHandle(rec);
r = MsiViewFetch(view, &rec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(rec, 1, result, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!result[0], "Expected an empty string, got %s\n", result);
-
+ check_record(rec, 1, "");
MsiCloseHandle(rec);
r = MsiViewFetch(view, &rec);
@@ -4299,22 +4196,12 @@ static void test_update(void)
r = MsiViewFetch(view, &rec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(rec, 1, result, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record(rec, 1, "this is text");
MsiCloseHandle(rec);
r = MsiViewFetch(view, &rec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(rec, 1, result, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!result[0], "Expected an empty string, got %s\n", result);
-
+ check_record(rec, 1, "");
MsiCloseHandle(rec);
r = MsiViewFetch(view, &rec);
@@ -4345,32 +4232,17 @@ static void test_update(void)
r = MsiViewFetch(view, &rec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(rec, 1, result, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record(rec, 1, "this is text");
MsiCloseHandle(rec);
r = MsiViewFetch(view, &rec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(rec, 1, result, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record(rec, 1, "this is text");
MsiCloseHandle(rec);
r = MsiViewFetch(view, &rec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(rec, 1, result, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record(rec, 1, "this is text");
MsiCloseHandle(rec);
r = MsiViewFetch(view, &rec);
@@ -4498,8 +4370,6 @@ static void test_tables_order(void)
const char *query;
MSIHANDLE hdb = 0, hview = 0, hrec = 0;
UINT r;
- char buffer[100];
- DWORD sz;
r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
@@ -4532,28 +4402,19 @@ static void test_tables_order(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "foo"), "Expected foo, got %s\n", buffer);
+ check_record(hrec, 1, "foo");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
+ check_record(hrec, 1, "baz");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "bar"), "Expected bar, got %s\n", buffer);
+ check_record(hrec, 1, "bar");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
@@ -4565,7 +4426,7 @@ static void test_tables_order(void)
/* The names of the tables in the _Columns table must
be in the same order as these names are created in
the strings table. */
- query = "SELECT * FROM `_Columns`";
+ query = "SELECT `Table`, `Number`, `Name` FROM `_Columns`";
r = MsiDatabaseOpenViewA(hdb, query, &hview);
ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
r = MsiViewExecute(hview, 0);
@@ -4573,66 +4434,31 @@ static void test_tables_order(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "foo"), "Expected foo, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
+ check_record(hrec, 3, "foo", "1", "baz");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "bar"), "Expected bar, got %s\n", buffer);
+ check_record(hrec, 3, "baz", "1", "bar");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
+ check_record(hrec, 3, "baz", "2", "baz");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "foo"), "Expected foo, got %s\n", buffer);
+ check_record(hrec, 3, "baz", "3", "foo");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "bar"), "Expected bar, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "foo"), "Expected foo, got %s\n", buffer);
+ check_record(hrec, 3, "bar", "1", "foo");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
@@ -4652,8 +4478,6 @@ static void test_rows_order(void)
const char *query;
MSIHANDLE hdb = 0, hview = 0, hrec = 0;
UINT r;
- char buffer[100];
- DWORD sz;
r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
@@ -4722,53 +4546,25 @@ static void test_rows_order(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "A"), "Expected A, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "B"), "Expected B, got %s\n", buffer);
+ check_record(hrec, 2, "A", "B");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "C"), "Expected E, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "E"), "Expected E, got %s\n", buffer);
+ check_record(hrec, 2, "C", "E");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "D"), "Expected D, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "E"), "Expected E, got %s\n", buffer);
+ check_record(hrec, 2, "D", "E");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "F"), "Expected F, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "A"), "Expected A, got %s\n", buffer);
+ check_record(hrec, 2, "F", "A");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
@@ -4954,8 +4750,6 @@ static void test_select_markers(void)
MSIHANDLE hdb = 0, rec, view, res;
LPCSTR query;
UINT r;
- DWORD size;
- CHAR buf[MAX_PATH];
hdb = create_db();
ok( hdb, "failed to create db\n");
@@ -4993,38 +4787,12 @@ static void test_select_markers(void)
r = MsiViewFetch(view, &res);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "apple"), "Expected apple, got %s\n", buf);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 2, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "two"), "Expected two, got %s\n", buf);
-
- r = MsiRecordGetInteger(res, 3);
- ok(r == 1, "Expected 1, got %d\n", r);
-
+ check_record(res, 3, "apple", "two", "1");
MsiCloseHandle(res);
r = MsiViewFetch(view, &res);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "apple"), "Expected apple, got %s\n", buf);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 2, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "two"), "Expected two, got %s\n", buf);
-
- r = MsiRecordGetInteger(res, 3);
- ok(r == 2, "Expected 2, got %d\n", r);
-
+ check_record(res, 3, "apple", "two", "2");
MsiCloseHandle(res);
r = MsiViewFetch(view, &res);
@@ -5046,38 +4814,12 @@ static void test_select_markers(void)
r = MsiViewFetch(view, &res);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "apple"), "Expected apple, got %s\n", buf);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 2, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "two"), "Expected two, got %s\n", buf);
-
- r = MsiRecordGetInteger(res, 3);
- ok(r == 2, "Expected 2, got %d\n", r);
-
+ check_record(res, 3, "apple", "two", "2");
MsiCloseHandle(res);
r = MsiViewFetch(view, &res);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "banana"), "Expected banana, got %s\n", buf);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 2, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "three"), "Expected three, got %s\n", buf);
-
- r = MsiRecordGetInteger(res, 3);
- ok(r == 3, "Expected 3, got %d\n", r);
-
+ check_record(res, 3, "banana", "three", "3");
MsiCloseHandle(res);
r = MsiViewFetch(view, &res);
@@ -5508,7 +5250,7 @@ static void test_stringtable(void)
const char *query;
char buffer[MAX_PATH];
WCHAR data[MAX_PATH];
- DWORD sz, read;
+ DWORD read;
UINT r;
static const DWORD mode = STGM_DIRECT | STGM_READ | STGM_SHARE_DENY_WRITE;
@@ -5593,18 +5335,7 @@ static void test_stringtable(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- r = MsiRecordGetFieldCount(hrec);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "one"), "Expected one, got '%s'\n", buffer);
-
+ check_record(hrec, 2, "1", "one");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -5627,35 +5358,13 @@ static void test_stringtable(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- r = MsiRecordGetFieldCount(hrec);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "two"), "Expected two, got '%s'\n", buffer);
-
+ check_record(hrec, 2, "2", "two");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- r = MsiRecordGetFieldCount(hrec);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 5, "Expected 5, got %d\n", r);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "five"), "Expected five, got '%s'\n", buffer);
-
+ check_record(hrec, 2, "5", "five");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -5741,8 +5450,6 @@ static void test_viewmodify_delete(void)
MSIHANDLE hdb = 0, hview = 0, hrec = 0;
UINT r;
const char *query;
- char buffer[0x100];
- DWORD sz;
DeleteFileA(msifile);
@@ -5806,20 +5513,7 @@ static void test_viewmodify_delete(void)
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 3, "Expected 3, got %d\n", r);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "Cindy"), "Expected Cindy, got %s\n", buffer);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "2937550"), "Expected 2937550, got %s\n", buffer);
-
+ check_record(hrec, 3, "3", "Cindy", "2937550");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -5942,10 +5636,9 @@ static void test_defaultdatabase(void)
static void test_order(void)
{
MSIHANDLE hdb, hview, hrec;
- CHAR buffer[MAX_PATH];
LPCSTR query;
- UINT r, sz;
int val;
+ UINT r;
hdb = create_db();
ok(hdb, "failed to create db\n");
@@ -6178,15 +5871,7 @@ static void test_order(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "dos"), "Expected \"dos\", got \"%s\"\n", buffer);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 3, "Expected 3, got %d\n", r);
-
+ check_record(hrec, 2, "dos", "3");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6317,9 +6002,7 @@ static void test_deleterow(void)
{
MSIHANDLE hdb, hview, hrec;
const char *query;
- char buf[MAX_PATH];
UINT r;
- DWORD size;
DeleteFileA(msifile);
@@ -6358,12 +6041,7 @@ static void test_deleterow(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "two"), "Expected two, got %s\n", buf);
-
+ check_record(hrec, 1, "two");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6384,9 +6062,7 @@ static void test_quotes(void)
{
MSIHANDLE hdb, hview, hrec;
const char *query;
- char buf[MAX_PATH];
UINT r;
- DWORD size;
DeleteFileA(msifile);
@@ -6437,13 +6113,7 @@ static void test_quotes(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "This is a \"string\" ok"),
- "Expected \"This is a \"string\" ok\", got %s\n", buf);
-
+ check_record(hrec, 1, "This is a \"string\" ok");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6468,13 +6138,7 @@ static void test_quotes(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "This is a new 'string' ok"),
- "Expected \"This is a new 'string' ok\", got %s\n", buf);
-
+ check_record(hrec, 1, "This is a new 'string' ok");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6490,9 +6154,7 @@ static void test_carriagereturn(void)
{
MSIHANDLE hdb, hview, hrec;
const char *query;
- char buf[MAX_PATH];
UINT r;
- DWORD size;
DeleteFileA(msifile);
@@ -6634,32 +6296,17 @@ static void test_carriagereturn(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "\rOne"), "Expected \"\\rOne\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "\rOne");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Tw\ro"), "Expected \"Tw\\ro\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "Tw\ro");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Three\r"), "Expected \"Three\r\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "Three\r");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6676,9 +6323,7 @@ static void test_noquotes(void)
{
MSIHANDLE hdb, hview, hrec;
const char *query;
- char buf[MAX_PATH];
UINT r;
- DWORD size;
DeleteFileA(msifile);
@@ -6709,32 +6354,17 @@ static void test_noquotes(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Table"), "Expected \"Table\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "Table");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Table2"), "Expected \"Table2\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "Table2");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Table3"), "Expected \"Table3\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "Table3");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6743,7 +6373,7 @@ static void test_noquotes(void)
MsiViewClose(hview);
MsiCloseHandle(hview);
- query = "SELECT * FROM `_Columns`";
+ query = "SELECT `Table`, `Number`, `Name` FROM `_Columns`";
r = MsiDatabaseOpenViewA(hdb, query, &hview);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
r = MsiViewExecute(hview, 0);
@@ -6751,56 +6381,17 @@ static void test_noquotes(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Table"), "Expected \"Table\", got \"%s\"\n", buf);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 3, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "A"), "Expected \"A\", got \"%s\"\n", buf);
-
+ check_record(hrec, 3, "Table", "1", "A");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Table2"), "Expected \"Table2\", got \"%s\"\n", buf);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 3, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "A"), "Expected \"A\", got \"%s\"\n", buf);
-
+ check_record(hrec, 3, "Table2", "1", "A");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Table3"), "Expected \"Table3\", got \"%s\"\n", buf);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 3, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "A"), "Expected \"A\", got \"%s\"\n", buf);
-
+ check_record(hrec, 3, "Table3", "1", "A");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6853,12 +6444,7 @@ static void test_noquotes(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "hi"), "Expected \"hi\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "hi");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6955,9 +6541,7 @@ static void test_viewmodify_refresh(void)
{
MSIHANDLE hdb, hview, hrec;
const char *query;
- char buffer[MAX_PATH];
UINT r;
- DWORD size;
DeleteFileA(msifile);
@@ -6987,17 +6571,9 @@ static void test_viewmodify_refresh(void)
r = MsiViewModify(hview, MSIMODIFY_REFRESH, hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buffer, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "hi"), "Expected \"hi\", got \"%s\"\n", buffer);
- ok(size == 2, "Expected 2, got %d\n", size);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 2, "Expected 2, got %d\n", r);
-
+ check_record(hrec, 2, "hi", "2");
MsiCloseHandle(hrec);
+
MsiViewClose(hview);
MsiCloseHandle(hview);
@@ -7024,17 +6600,9 @@ static void test_viewmodify_refresh(void)
r = MsiViewModify(hview, MSIMODIFY_REFRESH, hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buffer, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "hello"), "Expected \"hello\", got \"%s\"\n", buffer);
- ok(size == 5, "Expected 5, got %d\n", size);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 2, "Expected 2, got %d\n", r);
-
+ check_record(hrec, 2, "hello", "2");
MsiCloseHandle(hrec);
+
MsiViewClose(hview);
MsiCloseHandle(hview);
MsiCloseHandle(hdb);
@@ -7421,9 +6989,7 @@ error:
static void test_droptable(void)
{
MSIHANDLE hdb, hview, hrec;
- CHAR buf[MAX_PATH];
LPCSTR query;
- DWORD size;
UINT r;
r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
@@ -7445,17 +7011,13 @@ static void test_droptable(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "One");
MsiCloseHandle(hrec);
+
MsiViewClose(hview);
MsiCloseHandle(hview);
- query = "SELECT * FROM `_Columns` WHERE `Table` = 'One'";
+ query = "SELECT `Table`, `Number`, `Name` FROM `_Columns` WHERE `Table` = 'One'";
r = MsiDatabaseOpenViewA(hdb, query, &hview);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
r = MsiViewExecute(hview, 0);
@@ -7463,20 +7025,7 @@ static void test_droptable(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 3, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "A"), "Expected \"A\", got \"%s\"\n", buf);
-
+ check_record(hrec, 3, "One", "1", "A");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -7557,17 +7106,13 @@ static void test_droptable(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "One");
MsiCloseHandle(hrec);
+
MsiViewClose(hview);
MsiCloseHandle(hview);
- query = "SELECT * FROM `_Columns` WHERE `Table` = 'One'";
+ query = "SELECT `Table`, `Number`, `Name` FROM `_Columns` WHERE `Table` = 'One'";
r = MsiDatabaseOpenViewA(hdb, query, &hview);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
r = MsiViewExecute(hview, 0);
@@ -7575,38 +7120,12 @@ static void test_droptable(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 3, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "B"), "Expected \"B\", got \"%s\"\n", buf);
-
+ check_record(hrec, 3, "One", "1", "B");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 3, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "C"), "Expected \"C\", got \"%s\"\n", buf);
-
+ check_record(hrec, 3, "One", "2", "C");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -8644,12 +8163,7 @@ static void test_createtable(void)
res = MsiViewGetColumnInfo( htab, MSICOLINFO_NAMES, &hrec );
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
-
- buffer[0] = 0;
- size = sizeof(buffer);
- res = MsiRecordGetStringA(hrec, 1, buffer, &size );
- ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
- ok(!strcmp(buffer,"b"), "b != %s\n", buffer);
+ check_record(hrec, 1, "b");
MsiCloseHandle( hrec );
res = MsiViewClose( htab );
@@ -8673,13 +8187,7 @@ static void test_createtable(void)
res = MsiViewGetColumnInfo( htab, MSICOLINFO_NAMES, &hrec );
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
-
- buffer[0] = 0;
- size = sizeof(buffer);
- res = MsiRecordGetStringA(hrec, 1, buffer, &size );
- ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
- ok(!strcmp(buffer,"b"), "b != %s\n", buffer);
-
+ check_record(hrec, 1, "b");
res = MsiCloseHandle( hrec );
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
--
2.17.1
3
9
Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com>
---
dlls/msi/tests/db.c | 644 ++++++--------------------------------------
1 file changed, 76 insertions(+), 568 deletions(-)
diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c
index d97c350219..09ba4b8293 100644
--- a/dlls/msi/tests/db.c
+++ b/dlls/msi/tests/db.c
@@ -1021,19 +1021,7 @@ static void test_viewmodify(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "MsiRecordGetString failed\n");
- ok(!lstrcmpA(buffer, "bob"), "Expected bob, got %s\n", buffer);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "MsiRecordGetString failed\n");
- ok(!lstrcmpA(buffer, "7654321"), "Expected 7654321, got %s\n", buffer);
+ check_record(hrec, 3, "1", "bob", "7654321");
/* update the view, non-primary key */
r = MsiRecordSetStringA(hrec, 3, "3141592");
@@ -1070,20 +1058,7 @@ static void test_viewmodify(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "MsiRecordGetString failed\n");
- ok(!lstrcmpA(buffer, "bob"), "Expected bob, got %s\n", buffer);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "MsiRecordGetString failed\n");
- ok(!lstrcmpA(buffer, "3141592"), "Expected 3141592, got %s\n", buffer);
-
+ check_record(hrec, 3, "1", "bob", "3141592");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
@@ -1218,15 +1193,13 @@ static void test_getcolinfo(void)
{
MSIHANDLE hdb, hview = 0, rec = 0;
UINT r;
- DWORD sz;
- char buffer[0x20];
/* create an empty db */
hdb = create_db();
ok( hdb, "failed to create db\n");
/* tables should be present */
- r = MsiDatabaseOpenViewA(hdb, "select * from _Tables", &hview);
+ r = MsiDatabaseOpenViewA(hdb, "select Name from _Tables", &hview);
ok( r == ERROR_SUCCESS, "failed to open query\n");
r = MsiViewExecute(hview, 0);
@@ -1236,10 +1209,7 @@ static void test_getcolinfo(void)
rec = 0;
r = MsiViewGetColumnInfo( hview, MSICOLINFO_NAMES, &rec );
ok( r == ERROR_SUCCESS, "failed to get names\n");
- sz = sizeof buffer;
- r = MsiRecordGetStringA(rec, 1, buffer, &sz );
- ok( r == ERROR_SUCCESS, "failed to get string\n");
- ok( !strcmp(buffer,"Name"), "_Tables has wrong column name\n");
+ check_record(rec, 1, "Name");
r = MsiCloseHandle( rec );
ok( r == ERROR_SUCCESS, "failed to close record handle\n");
@@ -1247,10 +1217,7 @@ static void test_getcolinfo(void)
rec = 0;
r = MsiViewGetColumnInfo( hview, MSICOLINFO_TYPES, &rec );
ok( r == ERROR_SUCCESS, "failed to get names\n");
- sz = sizeof buffer;
- r = MsiRecordGetStringA(rec, 1, buffer, &sz );
- ok( r == ERROR_SUCCESS, "failed to get string\n");
- ok( !strcmp(buffer,"s64"), "_Tables has wrong column type\n");
+ check_record(rec, 1, "s64");
r = MsiCloseHandle( rec );
ok( r == ERROR_SUCCESS, "failed to close record handle\n");
@@ -2025,9 +1992,6 @@ static void test_where(void)
MSIHANDLE hdb = 0, rec, view;
LPCSTR query;
UINT r;
- DWORD size;
- CHAR buf[MAX_PATH];
- UINT count;
hdb = create_db();
ok( hdb, "failed to create db\n");
@@ -2068,11 +2032,6 @@ static void test_where(void)
r = do_query(hdb, query, &rec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed: %d\n", r);
check_record(rec, 6, "2", "1", "", "one.cab", "", "");
-
- r = MsiRecordGetInteger(rec, 1);
- ok( 2 == r, "field wrong\n");
- r = MsiRecordGetInteger(rec, 2);
- ok( 1 == r, "field wrong\n");
MsiCloseHandle( rec );
query = "SELECT `DiskId` FROM `Media` WHERE `LastSequence` >= 1 AND DiskId >= 0";
@@ -2084,23 +2043,12 @@ static void test_where(void)
r = MsiViewFetch(view, &rec);
ok( r == ERROR_SUCCESS, "failed to fetch view: %d\n", r );
-
- count = MsiRecordGetFieldCount( rec );
- ok( count == 1, "Expected 1 record fields, got %d\n", count );
-
- size = MAX_PATH;
- r = MsiRecordGetStringA( rec, 1, buf, &size );
- ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
- ok( !lstrcmpA( buf, "2" ), "For (row %d, column 1) expected '%d', got %s\n", 0, 2, buf );
+ check_record(rec, 1, "2");
MsiCloseHandle( rec );
r = MsiViewFetch(view, &rec);
ok( r == ERROR_SUCCESS, "failed to fetch view: %d\n", r );
-
- size = MAX_PATH;
- r = MsiRecordGetStringA( rec, 1, buf, &size );
- ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
- ok( !lstrcmpA( buf, "3" ), "For (row %d, column 1) expected '%d', got %s\n", 1, 3, buf );
+ check_record(rec, 1, "3");
MsiCloseHandle( rec );
r = MsiViewFetch(view, &rec);
@@ -3202,40 +3150,12 @@ static void test_try_transform(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "view fetch failed\n");
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- sz = sizeof buffer;
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "record get string failed\n");
- ok(!lstrcmpA(buffer, "c"), "Expected c, got %s\n", buffer);
-
- r = MsiRecordGetInteger(hrec, 3);
- ok(r == 0x80000000, "Expected 0x80000000, got %d\n", r);
-
- r = MsiRecordGetInteger(hrec, 4);
- ok(r == 5, "Expected 5, got %d\n", r);
-
+ check_record(hrec, 4, "1", "c", "", "5");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "view fetch failed\n");
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- sz = sizeof buffer;
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "record get string failed\n");
- ok(!lstrcmpA(buffer, "b"), "Expected b, got %s\n", buffer);
-
- r = MsiRecordGetInteger(hrec, 3);
- ok(r == 0x80000000, "Expected 0x80000000, got %d\n", r);
-
- r = MsiRecordGetInteger(hrec, 4);
- ok(r == 0x80000000, "Expected 0x80000000, got %d\n", r);
-
+ check_record(hrec, 4, "2", "b", "", "");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -3748,8 +3668,6 @@ static void test_temporary_table(void)
MSIHANDLE hdb = 0, view = 0, rec;
const char *query;
UINT r;
- char buf[0x10];
- DWORD sz;
cond = MsiDatabaseIsTablePersistentA(0, NULL);
ok( cond == MSICONDITION_ERROR, "wrong return condition\n");
@@ -3828,18 +3746,9 @@ static void test_temporary_table(void)
ok(r == ERROR_SUCCESS, "failed to query table\n");
r = MsiViewGetColumnInfo(view, MSICOLINFO_TYPES, &rec);
ok(r == ERROR_SUCCESS, "failed to get column info\n");
-
- sz = sizeof buf;
- r = MsiRecordGetStringA(rec, 1, buf, &sz);
- ok(r == ERROR_SUCCESS, "failed to get string\n");
- ok( 0 == strcmp("G255", buf), "wrong column type\n");
-
- sz = sizeof buf;
- r = MsiRecordGetStringA(rec, 2, buf, &sz);
- ok(r == ERROR_SUCCESS, "failed to get string\n");
- ok( 0 == strcmp("j2", buf), "wrong column type\n");
-
+ check_record(rec, 2, "G255", "j2");
MsiCloseHandle( rec );
+
MsiViewClose( view );
MsiCloseHandle( view );
@@ -4152,9 +4061,7 @@ static void test_integers(void)
static void test_update(void)
{
MSIHANDLE hdb = 0, view = 0, rec = 0;
- CHAR result[MAX_PATH];
const char *query;
- DWORD size;
UINT r;
/* just MsiOpenDatabase should not create a file */
@@ -4253,22 +4160,12 @@ static void test_update(void)
r = MsiViewFetch(view, &rec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(rec, 1, result, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record(rec, 1, "this is text");
MsiCloseHandle(rec);
r = MsiViewFetch(view, &rec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(rec, 1, result, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!result[0], "Expected an empty string, got %s\n", result);
-
+ check_record(rec, 1, "");
MsiCloseHandle(rec);
r = MsiViewFetch(view, &rec);
@@ -4299,22 +4196,12 @@ static void test_update(void)
r = MsiViewFetch(view, &rec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(rec, 1, result, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record(rec, 1, "this is text");
MsiCloseHandle(rec);
r = MsiViewFetch(view, &rec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(rec, 1, result, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!result[0], "Expected an empty string, got %s\n", result);
-
+ check_record(rec, 1, "");
MsiCloseHandle(rec);
r = MsiViewFetch(view, &rec);
@@ -4345,32 +4232,17 @@ static void test_update(void)
r = MsiViewFetch(view, &rec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(rec, 1, result, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record(rec, 1, "this is text");
MsiCloseHandle(rec);
r = MsiViewFetch(view, &rec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(rec, 1, result, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record(rec, 1, "this is text");
MsiCloseHandle(rec);
r = MsiViewFetch(view, &rec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(rec, 1, result, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
-
+ check_record(rec, 1, "this is text");
MsiCloseHandle(rec);
r = MsiViewFetch(view, &rec);
@@ -4498,8 +4370,6 @@ static void test_tables_order(void)
const char *query;
MSIHANDLE hdb = 0, hview = 0, hrec = 0;
UINT r;
- char buffer[100];
- DWORD sz;
r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
@@ -4524,7 +4394,7 @@ static void test_tables_order(void)
/* The names of the tables in the _Tables table must
be in the same order as these names are created in
the strings table. */
- query = "SELECT * FROM `_Tables`";
+ query = "SELECT `Name` FROM `_Tables`";
r = MsiDatabaseOpenViewA(hdb, query, &hview);
ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
r = MsiViewExecute(hview, 0);
@@ -4532,28 +4402,19 @@ static void test_tables_order(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "foo"), "Expected foo, got %s\n", buffer);
+ check_record(hrec, 1, "foo");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
+ check_record(hrec, 1, "baz");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "bar"), "Expected bar, got %s\n", buffer);
+ check_record(hrec, 1, "bar");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
@@ -4565,7 +4426,7 @@ static void test_tables_order(void)
/* The names of the tables in the _Columns table must
be in the same order as these names are created in
the strings table. */
- query = "SELECT * FROM `_Columns`";
+ query = "SELECT `Table`, `Number`, `Name` FROM `_Columns`";
r = MsiDatabaseOpenViewA(hdb, query, &hview);
ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
r = MsiViewExecute(hview, 0);
@@ -4573,66 +4434,31 @@ static void test_tables_order(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "foo"), "Expected foo, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
+ check_record(hrec, 3, "foo", "1", "baz");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "bar"), "Expected bar, got %s\n", buffer);
+ check_record(hrec, 3, "baz", "1", "bar");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
+ check_record(hrec, 3, "baz", "2", "baz");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "foo"), "Expected foo, got %s\n", buffer);
+ check_record(hrec, 3, "baz", "3", "foo");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "bar"), "Expected bar, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "foo"), "Expected foo, got %s\n", buffer);
+ check_record(hrec, 3, "bar", "1", "foo");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
@@ -4652,8 +4478,6 @@ static void test_rows_order(void)
const char *query;
MSIHANDLE hdb = 0, hview = 0, hrec = 0;
UINT r;
- char buffer[100];
- DWORD sz;
r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
@@ -4722,53 +4546,25 @@ static void test_rows_order(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "A"), "Expected A, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "B"), "Expected B, got %s\n", buffer);
+ check_record(hrec, 2, "A", "B");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "C"), "Expected E, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "E"), "Expected E, got %s\n", buffer);
+ check_record(hrec, 2, "C", "E");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "D"), "Expected D, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "E"), "Expected E, got %s\n", buffer);
+ check_record(hrec, 2, "D", "E");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "F"), "Expected F, got %s\n", buffer);
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "A"), "Expected A, got %s\n", buffer);
+ check_record(hrec, 2, "F", "A");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "failed to close record\n");
@@ -4954,8 +4750,6 @@ static void test_select_markers(void)
MSIHANDLE hdb = 0, rec, view, res;
LPCSTR query;
UINT r;
- DWORD size;
- CHAR buf[MAX_PATH];
hdb = create_db();
ok( hdb, "failed to create db\n");
@@ -4993,38 +4787,12 @@ static void test_select_markers(void)
r = MsiViewFetch(view, &res);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "apple"), "Expected apple, got %s\n", buf);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 2, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "two"), "Expected two, got %s\n", buf);
-
- r = MsiRecordGetInteger(res, 3);
- ok(r == 1, "Expected 1, got %d\n", r);
-
+ check_record(res, 3, "apple", "two", "1");
MsiCloseHandle(res);
r = MsiViewFetch(view, &res);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "apple"), "Expected apple, got %s\n", buf);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 2, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "two"), "Expected two, got %s\n", buf);
-
- r = MsiRecordGetInteger(res, 3);
- ok(r == 2, "Expected 2, got %d\n", r);
-
+ check_record(res, 3, "apple", "two", "2");
MsiCloseHandle(res);
r = MsiViewFetch(view, &res);
@@ -5046,38 +4814,12 @@ static void test_select_markers(void)
r = MsiViewFetch(view, &res);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "apple"), "Expected apple, got %s\n", buf);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 2, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "two"), "Expected two, got %s\n", buf);
-
- r = MsiRecordGetInteger(res, 3);
- ok(r == 2, "Expected 2, got %d\n", r);
-
+ check_record(res, 3, "apple", "two", "2");
MsiCloseHandle(res);
r = MsiViewFetch(view, &res);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "banana"), "Expected banana, got %s\n", buf);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(res, 2, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "three"), "Expected three, got %s\n", buf);
-
- r = MsiRecordGetInteger(res, 3);
- ok(r == 3, "Expected 3, got %d\n", r);
-
+ check_record(res, 3, "banana", "three", "3");
MsiCloseHandle(res);
r = MsiViewFetch(view, &res);
@@ -5508,7 +5250,7 @@ static void test_stringtable(void)
const char *query;
char buffer[MAX_PATH];
WCHAR data[MAX_PATH];
- DWORD sz, read;
+ DWORD read;
UINT r;
static const DWORD mode = STGM_DIRECT | STGM_READ | STGM_SHARE_DENY_WRITE;
@@ -5593,18 +5335,7 @@ static void test_stringtable(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- r = MsiRecordGetFieldCount(hrec);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "one"), "Expected one, got '%s'\n", buffer);
-
+ check_record(hrec, 2, "1", "one");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -5627,35 +5358,13 @@ static void test_stringtable(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- r = MsiRecordGetFieldCount(hrec);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "two"), "Expected two, got '%s'\n", buffer);
-
+ check_record(hrec, 2, "2", "two");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- r = MsiRecordGetFieldCount(hrec);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 5, "Expected 5, got %d\n", r);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "five"), "Expected five, got '%s'\n", buffer);
-
+ check_record(hrec, 2, "5", "five");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -5741,8 +5450,6 @@ static void test_viewmodify_delete(void)
MSIHANDLE hdb = 0, hview = 0, hrec = 0;
UINT r;
const char *query;
- char buffer[0x100];
- DWORD sz;
DeleteFileA(msifile);
@@ -5806,20 +5513,7 @@ static void test_viewmodify_delete(void)
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- r = MsiRecordGetInteger(hrec, 1);
- ok(r == 3, "Expected 3, got %d\n", r);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "Cindy"), "Expected Cindy, got %s\n", buffer);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "2937550"), "Expected 2937550, got %s\n", buffer);
-
+ check_record(hrec, 3, "3", "Cindy", "2937550");
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -5942,10 +5636,9 @@ static void test_defaultdatabase(void)
static void test_order(void)
{
MSIHANDLE hdb, hview, hrec;
- CHAR buffer[MAX_PATH];
LPCSTR query;
- UINT r, sz;
int val;
+ UINT r;
hdb = create_db();
ok(hdb, "failed to create db\n");
@@ -6178,15 +5871,7 @@ static void test_order(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- sz = sizeof(buffer);
- r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "dos"), "Expected \"dos\", got \"%s\"\n", buffer);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 3, "Expected 3, got %d\n", r);
-
+ check_record(hrec, 2, "dos", "3");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6317,9 +6002,7 @@ static void test_deleterow(void)
{
MSIHANDLE hdb, hview, hrec;
const char *query;
- char buf[MAX_PATH];
UINT r;
- DWORD size;
DeleteFileA(msifile);
@@ -6358,12 +6041,7 @@ static void test_deleterow(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "two"), "Expected two, got %s\n", buf);
-
+ check_record(hrec, 1, "two");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6384,9 +6062,7 @@ static void test_quotes(void)
{
MSIHANDLE hdb, hview, hrec;
const char *query;
- char buf[MAX_PATH];
UINT r;
- DWORD size;
DeleteFileA(msifile);
@@ -6437,13 +6113,7 @@ static void test_quotes(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "This is a \"string\" ok"),
- "Expected \"This is a \"string\" ok\", got %s\n", buf);
-
+ check_record(hrec, 1, "This is a \"string\" ok");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6468,13 +6138,7 @@ static void test_quotes(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "This is a new 'string' ok"),
- "Expected \"This is a new 'string' ok\", got %s\n", buf);
-
+ check_record(hrec, 1, "This is a new 'string' ok");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6490,9 +6154,7 @@ static void test_carriagereturn(void)
{
MSIHANDLE hdb, hview, hrec;
const char *query;
- char buf[MAX_PATH];
UINT r;
- DWORD size;
DeleteFileA(msifile);
@@ -6626,7 +6288,7 @@ static void test_carriagereturn(void)
ok(r == ERROR_BAD_QUERY_SYNTAX,
"Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
- query = "SELECT * FROM `_Tables`";
+ query = "SELECT `Name` FROM `_Tables`";
r = MsiDatabaseOpenViewA(hdb, query, &hview);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
r = MsiViewExecute(hview, 0);
@@ -6634,32 +6296,17 @@ static void test_carriagereturn(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "\rOne"), "Expected \"\\rOne\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "\rOne");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Tw\ro"), "Expected \"Tw\\ro\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "Tw\ro");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Three\r"), "Expected \"Three\r\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "Three\r");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6676,9 +6323,7 @@ static void test_noquotes(void)
{
MSIHANDLE hdb, hview, hrec;
const char *query;
- char buf[MAX_PATH];
UINT r;
- DWORD size;
DeleteFileA(msifile);
@@ -6701,7 +6346,7 @@ static void test_noquotes(void)
r = run_query(hdb, 0, query);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- query = "SELECT * FROM `_Tables`";
+ query = "SELECT `Name` FROM `_Tables`";
r = MsiDatabaseOpenViewA(hdb, query, &hview);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
r = MsiViewExecute(hview, 0);
@@ -6709,32 +6354,17 @@ static void test_noquotes(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Table"), "Expected \"Table\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "Table");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Table2"), "Expected \"Table2\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "Table2");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Table3"), "Expected \"Table3\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "Table3");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6743,7 +6373,7 @@ static void test_noquotes(void)
MsiViewClose(hview);
MsiCloseHandle(hview);
- query = "SELECT * FROM `_Columns`";
+ query = "SELECT `Table`, `Number`, `Name` FROM `_Columns`";
r = MsiDatabaseOpenViewA(hdb, query, &hview);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
r = MsiViewExecute(hview, 0);
@@ -6751,56 +6381,17 @@ static void test_noquotes(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Table"), "Expected \"Table\", got \"%s\"\n", buf);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 3, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "A"), "Expected \"A\", got \"%s\"\n", buf);
-
+ check_record(hrec, 3, "Table", "1", "A");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Table2"), "Expected \"Table2\", got \"%s\"\n", buf);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 3, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "A"), "Expected \"A\", got \"%s\"\n", buf);
-
+ check_record(hrec, 3, "Table2", "1", "A");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "Table3"), "Expected \"Table3\", got \"%s\"\n", buf);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 3, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "A"), "Expected \"A\", got \"%s\"\n", buf);
-
+ check_record(hrec, 3, "Table3", "1", "A");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6853,12 +6444,7 @@ static void test_noquotes(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "hi"), "Expected \"hi\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "hi");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -6955,9 +6541,7 @@ static void test_viewmodify_refresh(void)
{
MSIHANDLE hdb, hview, hrec;
const char *query;
- char buffer[MAX_PATH];
UINT r;
- DWORD size;
DeleteFileA(msifile);
@@ -6987,17 +6571,9 @@ static void test_viewmodify_refresh(void)
r = MsiViewModify(hview, MSIMODIFY_REFRESH, hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buffer, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "hi"), "Expected \"hi\", got \"%s\"\n", buffer);
- ok(size == 2, "Expected 2, got %d\n", size);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 2, "Expected 2, got %d\n", r);
-
+ check_record(hrec, 2, "hi", "2");
MsiCloseHandle(hrec);
+
MsiViewClose(hview);
MsiCloseHandle(hview);
@@ -7024,17 +6600,9 @@ static void test_viewmodify_refresh(void)
r = MsiViewModify(hview, MSIMODIFY_REFRESH, hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buffer, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buffer, "hello"), "Expected \"hello\", got \"%s\"\n", buffer);
- ok(size == 5, "Expected 5, got %d\n", size);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 2, "Expected 2, got %d\n", r);
-
+ check_record(hrec, 2, "hello", "2");
MsiCloseHandle(hrec);
+
MsiViewClose(hview);
MsiCloseHandle(hview);
MsiCloseHandle(hdb);
@@ -7421,9 +6989,7 @@ error:
static void test_droptable(void)
{
MSIHANDLE hdb, hview, hrec;
- CHAR buf[MAX_PATH];
LPCSTR query;
- DWORD size;
UINT r;
r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
@@ -7437,7 +7003,7 @@ static void test_droptable(void)
r = do_query(hdb, query, &hrec);
ok(r == ERROR_NO_MORE_ITEMS, "Expected ERROR_NO_MORE_ITEMS, got %d\n", r);
- query = "SELECT * FROM `_Tables` WHERE `Name` = 'One'";
+ query = "SELECT `Name` FROM `_Tables` WHERE `Name` = 'One'";
r = MsiDatabaseOpenViewA(hdb, query, &hview);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
r = MsiViewExecute(hview, 0);
@@ -7445,17 +7011,13 @@ static void test_droptable(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "One");
MsiCloseHandle(hrec);
+
MsiViewClose(hview);
MsiCloseHandle(hview);
- query = "SELECT * FROM `_Columns` WHERE `Table` = 'One'";
+ query = "SELECT `Table`, `Number`, `Name` FROM `_Columns` WHERE `Table` = 'One'";
r = MsiDatabaseOpenViewA(hdb, query, &hview);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
r = MsiViewExecute(hview, 0);
@@ -7463,20 +7025,7 @@ static void test_droptable(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 3, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "A"), "Expected \"A\", got \"%s\"\n", buf);
-
+ check_record(hrec, 3, "One", "1", "A");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -7549,7 +7098,7 @@ static void test_droptable(void)
r = do_query(hdb, query, &hrec);
ok(r == ERROR_NO_MORE_ITEMS, "Expected ERROR_NO_MORE_ITEMS, got %d\n", r);
- query = "SELECT * FROM `_Tables` WHERE `Name` = 'One'";
+ query = "SELECT `Name` FROM `_Tables` WHERE `Name` = 'One'";
r = MsiDatabaseOpenViewA(hdb, query, &hview);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
r = MsiViewExecute(hview, 0);
@@ -7557,17 +7106,13 @@ static void test_droptable(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
-
+ check_record(hrec, 1, "One");
MsiCloseHandle(hrec);
+
MsiViewClose(hview);
MsiCloseHandle(hview);
- query = "SELECT * FROM `_Columns` WHERE `Table` = 'One'";
+ query = "SELECT `Table`, `Number`, `Name` FROM `_Columns` WHERE `Table` = 'One'";
r = MsiDatabaseOpenViewA(hdb, query, &hview);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
r = MsiViewExecute(hview, 0);
@@ -7575,38 +7120,12 @@ static void test_droptable(void)
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 1, "Expected 1, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 3, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "B"), "Expected \"B\", got \"%s\"\n", buf);
-
+ check_record(hrec, 3, "One", "1", "B");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 1, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "One"), "Expected \"One\", got \"%s\"\n", buf);
-
- r = MsiRecordGetInteger(hrec, 2);
- ok(r == 2, "Expected 2, got %d\n", r);
-
- size = MAX_PATH;
- r = MsiRecordGetStringA(hrec, 3, buf, &size);
- ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
- ok(!lstrcmpA(buf, "C"), "Expected \"C\", got \"%s\"\n", buf);
-
+ check_record(hrec, 3, "One", "2", "C");
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec);
@@ -8644,12 +8163,7 @@ static void test_createtable(void)
res = MsiViewGetColumnInfo( htab, MSICOLINFO_NAMES, &hrec );
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
-
- buffer[0] = 0;
- size = sizeof(buffer);
- res = MsiRecordGetStringA(hrec, 1, buffer, &size );
- ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
- ok(!strcmp(buffer,"b"), "b != %s\n", buffer);
+ check_record(hrec, 1, "b");
MsiCloseHandle( hrec );
res = MsiViewClose( htab );
@@ -8673,13 +8187,7 @@ static void test_createtable(void)
res = MsiViewGetColumnInfo( htab, MSICOLINFO_NAMES, &hrec );
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
-
- buffer[0] = 0;
- size = sizeof(buffer);
- res = MsiRecordGetStringA(hrec, 1, buffer, &size );
- ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
- ok(!strcmp(buffer,"b"), "b != %s\n", buffer);
-
+ check_record(hrec, 1, "b");
res = MsiCloseHandle( hrec );
ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
--
2.20.1
2
1
24 Jan '19
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/ole32/compobj.c | 108 +++++++++++++++++++++++++++--------
dlls/ole32/compobj_private.h | 17 +++++-
dlls/ole32/tests/compobj.c | 15 ++---
3 files changed, 102 insertions(+), 38 deletions(-)
diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c
index 66b1683d98..f48e78ba38 100644
--- a/dlls/ole32/compobj.c
+++ b/dlls/ole32/compobj.c
@@ -1738,11 +1738,21 @@ static void COM_TlsDestroy(void)
struct oletls *info = NtCurrentTeb()->ReservedForOle;
if (info)
{
+ struct init_spy *cursor, *cursor2;
+
if (info->apt) apartment_release(info->apt);
if (info->errorinfo) IErrorInfo_Release(info->errorinfo);
if (info->state) IUnknown_Release(info->state);
- if (info->spy) IInitializeSpy_Release(info->spy);
+
+ LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, &info->spies, struct init_spy, entry)
+ {
+ list_remove(&cursor->entry);
+ IInitializeSpy_Release(cursor->spy);
+ heap_free(cursor);
+ }
+
if (info->context_token) IObjContext_Release(info->context_token);
+
HeapFree(GetProcessHeap(), 0, info);
NtCurrentTeb()->ReservedForOle = NULL;
}
@@ -1783,6 +1793,9 @@ DWORD WINAPI CoBuildVersion(void)
HRESULT WINAPI CoRegisterInitializeSpy(IInitializeSpy *spy, ULARGE_INTEGER *cookie)
{
struct oletls *info = COM_CurrentInfo();
+ struct init_spy *entry, *cur;
+ unsigned int id = 0;
+ struct list *before;
HRESULT hr;
TRACE("(%p, %p)\n", spy, cookie);
@@ -1794,19 +1807,38 @@ HRESULT WINAPI CoRegisterInitializeSpy(IInitializeSpy *spy, ULARGE_INTEGER *cook
return E_INVALIDARG;
}
- if (info->spy)
+ hr = IInitializeSpy_QueryInterface(spy, &IID_IInitializeSpy, (void **)&spy);
+ if (FAILED(hr))
+ return hr;
+
+ entry = heap_alloc(sizeof(*entry));
+ if (!entry)
{
- FIXME("Already registered?\n");
- return E_UNEXPECTED;
+ IInitializeSpy_Release(spy);
+ return E_OUTOFMEMORY;
}
- hr = IInitializeSpy_QueryInterface(spy, &IID_IInitializeSpy, (void **) &info->spy);
- if (SUCCEEDED(hr))
+ entry->spy = spy;
+ before = &info->spies;
+
+ LIST_FOR_EACH_ENTRY(cur, &info->spies, struct init_spy, entry)
{
- cookie->QuadPart = (DWORD_PTR)spy;
- return S_OK;
+ if (id != cur->id)
+ {
+ before = &cur->entry;
+ break;
+ }
+
+ id++;
}
- return hr;
+
+ entry->id = id;
+ list_add_before(before, &entry->entry);
+
+ cookie->HighPart = GetCurrentThreadId();
+ cookie->LowPart = entry->id;
+
+ return S_OK;
}
/******************************************************************************
@@ -1827,14 +1859,26 @@ HRESULT WINAPI CoRegisterInitializeSpy(IInitializeSpy *spy, ULARGE_INTEGER *cook
HRESULT WINAPI CoRevokeInitializeSpy(ULARGE_INTEGER cookie)
{
struct oletls *info = COM_CurrentInfo();
+ struct init_spy *spy;
+
TRACE("(%s)\n", wine_dbgstr_longlong(cookie.QuadPart));
- if (!info || !info->spy || cookie.QuadPart != (DWORD_PTR)info->spy)
+ if (!info || cookie.HighPart != GetCurrentThreadId())
return E_INVALIDARG;
- IInitializeSpy_Release(info->spy);
- info->spy = NULL;
- return S_OK;
+ LIST_FOR_EACH_ENTRY(spy, &info->spies, struct init_spy, entry)
+ {
+ if (cookie.LowPart == spy->id)
+ {
+ IInitializeSpy_Release(spy->spy);
+ list_remove(&spy->entry);
+ heap_free(spy);
+
+ return S_OK;
+ }
+ }
+
+ return E_INVALIDARG;
}
HRESULT enter_apartment( struct oletls *info, DWORD model )
@@ -1929,6 +1973,7 @@ HRESULT WINAPI CoInitialize(LPVOID lpReserved)
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
{
struct oletls *info = COM_CurrentInfo();
+ struct init_spy *cursor;
HRESULT hr;
TRACE("(%p, %x)\n", lpReserved, (int)dwCoInit);
@@ -1955,13 +2000,17 @@ HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoIni
RunningObjectTableImpl_Initialize();
}
- if (info->spy)
- IInitializeSpy_PreInitialize(info->spy, dwCoInit, info->inits);
+ LIST_FOR_EACH_ENTRY(cursor, &info->spies, struct init_spy, entry)
+ {
+ IInitializeSpy_PreInitialize(cursor->spy, dwCoInit, info->inits);
+ }
hr = enter_apartment( info, dwCoInit );
- if (info->spy)
- IInitializeSpy_PostInitialize(info->spy, hr, dwCoInit, info->inits);
+ LIST_FOR_EACH_ENTRY(cursor, &info->spies, struct init_spy, entry)
+ {
+ hr = IInitializeSpy_PostInitialize(cursor->spy, hr, dwCoInit, info->inits);
+ }
return hr;
}
@@ -1985,6 +2034,7 @@ HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoIni
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
{
struct oletls * info = COM_CurrentInfo();
+ struct init_spy *cursor;
LONG lCOMRefCnt;
TRACE("()\n");
@@ -1992,17 +2042,22 @@ void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
/* will only happen on OOM */
if (!info) return;
- if (info->spy)
- IInitializeSpy_PreUninitialize(info->spy, info->inits);
+ LIST_FOR_EACH_ENTRY(cursor, &info->spies, struct init_spy, entry)
+ {
+ IInitializeSpy_PreUninitialize(cursor->spy, info->inits);
+ }
/* sanity check */
if (!info->inits)
{
- ERR("Mismatched CoUninitialize\n");
+ ERR("Mismatched CoUninitialize\n");
- if (info->spy)
- IInitializeSpy_PostUninitialize(info->spy, info->inits);
- return;
+ LIST_FOR_EACH_ENTRY(cursor, &info->spies, struct init_spy, entry)
+ {
+ IInitializeSpy_PostUninitialize(cursor->spy, info->inits);
+ }
+
+ return;
}
leave_apartment( info );
@@ -2024,8 +2079,11 @@ void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
ERR( "CoUninitialize() - not CoInitialized.\n" );
InterlockedExchangeAdd(&s_COMLockCount,1); /* restore the lock count. */
}
- if (info->spy)
- IInitializeSpy_PostUninitialize(info->spy, info->inits);
+
+ LIST_FOR_EACH_ENTRY(cursor, &info->spies, struct init_spy, entry)
+ {
+ IInitializeSpy_PostUninitialize(cursor->spy, info->inits);
+ }
}
/******************************************************************************
diff --git a/dlls/ole32/compobj_private.h b/dlls/ole32/compobj_private.h
index 1e564a3de1..8bf3d6fc81 100644
--- a/dlls/ole32/compobj_private.h
+++ b/dlls/ole32/compobj_private.h
@@ -153,6 +153,13 @@ struct apartment
BOOL main; /* is this a main-threaded-apartment? (RO) */
};
+struct init_spy
+{
+ struct list entry;
+ IInitializeSpy *spy;
+ unsigned int id;
+};
+
/* this is what is stored in TEB->ReservedForOle */
struct oletls
{
@@ -160,7 +167,7 @@ struct oletls
IErrorInfo *errorinfo; /* see errorinfo.c */
IUnknown *state; /* see CoSetState */
DWORD apt_mask; /* apartment mask (+0Ch on x86) */
- IInitializeSpy *spy; /* The "SPY" from CoInitializeSpy */
+ void *unknown0;
DWORD inits; /* number of times CoInitializeEx called */
DWORD ole_inits; /* number of times OleInitialize called */
GUID causality_id; /* unique identifier for each COM call */
@@ -171,6 +178,7 @@ struct oletls
IUnknown *call_state; /* current call context (+3Ch on x86) */
DWORD unknown2[46];
IUnknown *cancel_object; /* cancel object set by CoSetCancelObject (+F8h on x86) */
+ struct list spies; /* Spies installed with CoRegisterInitializeSpy */
};
@@ -262,7 +270,12 @@ APARTMENT *apartment_get_current_or_mta(void) DECLSPEC_HIDDEN;
static inline struct oletls *COM_CurrentInfo(void)
{
if (!NtCurrentTeb()->ReservedForOle)
- NtCurrentTeb()->ReservedForOle = heap_alloc_zero(sizeof(struct oletls));
+ {
+ struct oletls *oletls = heap_alloc_zero(sizeof(*oletls));
+ if (oletls)
+ list_init(&oletls->spies);
+ NtCurrentTeb()->ReservedForOle = oletls;
+ }
return NtCurrentTeb()->ReservedForOle;
}
diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c
index d3b4dc70e4..4c51ee67a0 100644
--- a/dlls/ole32/tests/compobj.c
+++ b/dlls/ole32/tests/compobj.c
@@ -3363,32 +3363,28 @@ static void test_IInitializeSpy(void)
cookie.LowPart = 1;
hr = CoRegisterInitializeSpy(&testinitialize, &cookie);
ok(hr == S_OK, "got 0x%08x\n", hr);
-todo_wine {
ok(cookie.HighPart == GetCurrentThreadId(), "got high part 0x%08x, expected 0x%08x\n", cookie.HighPart,
GetCurrentThreadId());
ok(cookie.LowPart == 0, "got wrong low part 0x%x\n", cookie.LowPart);
-}
+
/* register same instance one more time */
cookie1.HighPart = 0;
cookie1.LowPart = 0;
hr = CoRegisterInitializeSpy(&testinitialize, &cookie1);
-todo_wine {
ok(hr == S_OK, "got 0x%08x\n", hr);
ok(cookie1.HighPart == GetCurrentThreadId(), "got high part 0x%08x, expected 0x%08x\n", cookie1.HighPart,
GetCurrentThreadId());
ok(cookie1.LowPart == 1, "got wrong low part 0x%x\n", cookie1.LowPart);
-}
+
cookie2.HighPart = 0;
cookie2.LowPart = 0;
hr = CoRegisterInitializeSpy(&testinitialize, &cookie2);
-todo_wine {
ok(hr == S_OK, "got 0x%08x\n", hr);
ok(cookie2.HighPart == GetCurrentThreadId(), "got high part 0x%08x, expected 0x%08x\n", cookie2.HighPart,
GetCurrentThreadId());
ok(cookie2.LowPart == 2, "got wrong low part 0x%x\n", cookie2.LowPart);
-}
+
hr = CoRevokeInitializeSpy(cookie1);
-todo_wine
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = CoRevokeInitializeSpy(cookie1);
@@ -3397,21 +3393,18 @@ todo_wine
cookie1.HighPart = 0;
cookie1.LowPart = 0;
hr = CoRegisterInitializeSpy(&testinitialize, &cookie1);
-todo_wine {
ok(hr == S_OK, "got 0x%08x\n", hr);
ok(cookie1.HighPart == GetCurrentThreadId(), "got high part 0x%08x, expected 0x%08x\n", cookie1.HighPart,
GetCurrentThreadId());
ok(cookie1.LowPart == 1, "got wrong low part 0x%x\n", cookie1.LowPart);
-}
+
hr = CoRevokeInitializeSpy(cookie);
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = CoRevokeInitializeSpy(cookie1);
-todo_wine
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = CoRevokeInitializeSpy(cookie2);
-todo_wine
ok(hr == S_OK, "got 0x%08x\n", hr);
}
--
2.20.1
2
2