Module: wine Branch: master Commit: 9dddb94b9990e3919f0b879934229de57e75f2a6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9dddb94b9990e3919f0b879934...
Author: Hib Eris hib@hiberis.nl Date: Tue Oct 20 15:49:39 2009 +0200
msi: Fix merging string type checks.
---
dlls/msi/database.c | 15 ++++++++++++++- dlls/msi/tests/db.c | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/dlls/msi/database.c b/dlls/msi/database.c index 85d71c2..adbdb9d 100644 --- a/dlls/msi/database.c +++ b/dlls/msi/database.c @@ -1081,6 +1081,19 @@ typedef struct _tagMERGEDATA struct list *tabledata; } MERGEDATA;
+static BOOL merge_type_match(LPCWSTR type1, LPCWSTR type2) +{ + if (((type1[0] == 'l') || (type1[0] == 's')) && + ((type2[0] == 'l') || (type2[0] == 's'))) + return TRUE; + + if (((type1[0] == 'L') || (type1[0] == 'S')) && + ((type2[0] == 'L') || (type2[0] == 'S'))) + return TRUE; + + return !lstrcmpW(type1, type2); +} + static UINT merge_verify_colnames(MSIQUERY *dbview, MSIQUERY *mergeview) { MSIRECORD *dbrec, *mergerec; @@ -1126,7 +1139,7 @@ static UINT merge_verify_colnames(MSIQUERY *dbview, MSIQUERY *mergeview) if (!MSI_RecordGetString(mergerec, i)) break;
- if (lstrcmpW(MSI_RecordGetString(dbrec, i), + if (!merge_type_match(MSI_RecordGetString(dbrec, i), MSI_RecordGetString(mergerec, i))) { r = ERROR_DATATYPE_MISMATCH; diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c index 7013fa4..4bb0039 100644 --- a/dlls/msi/tests/db.c +++ b/dlls/msi/tests/db.c @@ -7273,7 +7273,7 @@ static void test_dbmerge(void)
/* column sting types don't match exactly */ r = MsiDatabaseMergeA(hdb, href, "MergeErrors"); - todo_wine ok(r == ERROR_SUCCESS, + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
/* nothing in MergeErrors */