diff --git a/dlls/msi/msi.spec b/dlls/msi/msi.spec index 0368ea187f6..0b4c3804936 100644 --- a/dlls/msi/msi.spec +++ b/dlls/msi/msi.spec @@ -160,7 +160,7 @@ 160 stdcall MsiViewFetch(long ptr) 161 stub MsiViewGetErrorA 162 stub MsiViewGetErrorW -163 stub MsiViewModify +163 stdcall MsiViewModify(long long long) 164 stdcall MsiDatabaseIsTablePersistentA(long str) 165 stdcall MsiDatabaseIsTablePersistentW(long wstr) 166 stdcall MsiViewGetColumnInfo(long long ptr) diff --git a/dlls/msi/msiquery.c b/dlls/msi/msiquery.c index 31801c2db08..4caadfd099d 100644 --- a/dlls/msi/msiquery.c +++ b/dlls/msi/msiquery.c @@ -194,7 +194,8 @@ UINT WINAPI MsiViewFetch(MSIHANDLE hView, MSIHANDLE *record) ERR("Error getting column type for %d\n", i ); continue; } - if( type != MSITYPE_BINARY) + if (( type != MSITYPE_BINARY) && (type != (MSITYPE_BINARY | + MSITYPE_NULLABLE))) { ret = view->ops->fetch_int( view, query->row, i, &ival ); if( ret ) @@ -424,3 +425,10 @@ UINT WINAPI MsiGetComponentStateW(MSIHANDLE hInstall, LPWSTR szFeature, FIXME("%ld %s %p %p\n", hInstall, debugstr_w(szFeature), piInstalled, piAction); return ERROR_CALL_NOT_IMPLEMENTED; } + +UINT WINAPI MsiViewModify(MSIHANDLE hView, MSIMODIFY eModifyMode, MSIHANDLE +hRecord) +{ + FIXME("%ld %x %ld\n",hView, eModifyMode, hRecord); + return ERROR_CALL_NOT_IMPLEMENTED; +} diff --git a/dlls/msi/record.c b/dlls/msi/record.c index aca62f5a41a..43c9c822433 100644 --- a/dlls/msi/record.c +++ b/dlls/msi/record.c @@ -434,7 +434,10 @@ UINT WINAPI MsiRecordReadStream(MSIHANDLE handle, unsigned int iField, char *buf return ERROR_INVALID_FIELD; if( rec->fields[iField].type != MSIFIELD_STREAM ) + { + *sz = 0; return ERROR_INVALID_FIELD; + } stm = rec->fields[iField].u.stream; if( !stm )