diff --git a/dlls/msi/package.c b/dlls/msi/package.c index 53433d09502..283b0a64e06 100644 --- a/dlls/msi/package.c +++ b/dlls/msi/package.c @@ -668,6 +668,10 @@ INT MSI_ProcessMessage( MSIPACKAGE *package, INSTALLMESSAGE eMessageType, action = MSI_RecordGetString(record, 1); action_text = MSI_RecordGetString(record, 2); + + if (!action || !action_text) + return IDOK; + deformat_string(package, action_text, &deformatted); len = strlenW(timet) + strlenW(action) + strlenW(template_s); diff --git a/dlls/msi/tests/format.c b/dlls/msi/tests/format.c index 1ea9ee327dd..c7d4fc56c09 100644 --- a/dlls/msi/tests/format.c +++ b/dlls/msi/tests/format.c @@ -1360,9 +1360,35 @@ static void test_formatrecord_package(void) DeleteFile( filename ); } +static void test_processmessage(void) +{ + static const CHAR filename[] = "winetest.msi"; + MSIHANDLE hrec; + MSIHANDLE package; + int r; + + package = helper_createpackage( filename ); + ok(package!=0, "Unable to create package\n"); + + hrec = MsiCreateRecord(3); + ok( hrec, "failed to create record\n"); + + r = MsiRecordSetString(hrec, 1, ""); + ok( r == ERROR_SUCCESS, "set string failed\n"); + + r = MsiProcessMessage(package, INSTALLMESSAGE_ACTIONSTART, hrec); + ok( r == IDOK, "expected IDOK, got %i\n", r); + + MsiCloseHandle(hrec); + MsiCloseHandle(package); + + DeleteFile(filename); +} + START_TEST(format) { test_createpackage(); test_formatrecord(); test_formatrecord_package(); + test_processmessage(); }