Sync to Wine-0_9_4: Magnus Olsen magnus@itkonsult-olsen.com - msi: Fixed deformat_environment to not cut off string. Bill Medland billmedland@mercuryspeed.com - msi: Use a default dialog font if nothing is specified. - msi: Prevent array underflow in MsiFormat when measuring with zero-length buffer. Modified: trunk/reactos/lib/msi/dialog.c Modified: trunk/reactos/lib/msi/format.c _____
Modified: trunk/reactos/lib/msi/dialog.c --- trunk/reactos/lib/msi/dialog.c 2005-12-26 23:08:49 UTC (rev 20348) +++ trunk/reactos/lib/msi/dialog.c 2005-12-26 23:10:21 UTC (rev 20349) @@ -1618,6 +1618,8 @@
{ static const WCHAR df[] = { 'D','e','f','a','u','l','t','U','I','F','o','n','t',0 }; + static const WCHAR dfv[] = { + 'M','S',' ','S','h','e','l','l',' ','D','l','g',0 }; msi_dialog *dialog = (msi_dialog*) cs->lpCreateParams; MSIRECORD *rec = NULL; LPWSTR title = NULL; @@ -1644,6 +1646,11 @@ dialog->attributes = MSI_RecordGetInteger( rec, 6 );
dialog->default_font = msi_dup_property( dialog->package, df ); + if (!dialog->default_font) + { + dialog->default_font = strdupW(dfv); + if (!dialog->default_font) return -1; + }
title = msi_get_deformatted_field( dialog->package, rec, 7 ); SetWindowTextW( hwnd, title ); _____
Modified: trunk/reactos/lib/msi/format.c --- trunk/reactos/lib/msi/format.c 2005-12-26 23:08:49 UTC (rev 20348) +++ trunk/reactos/lib/msi/format.c 2005-12-26 23:10:21 UTC (rev 20349) @@ -639,10 +639,15 @@
len = deformat_string_internal(package,rec,&deformated,strlenW(rec), record, NULL); + /* If len is zero then WideCharToMultiByte will return 0 indicating + * failure, but that will do just as well since we are ignoring + * possible errors. + */ lenA = WideCharToMultiByte(CP_ACP,0,deformated,len,NULL,0,NULL,NULL);
if (buffer) { + /* Ditto above */ WideCharToMultiByte(CP_ACP,0,deformated,len,buffer,*size,NULL, NULL); if (*size>lenA) { @@ -652,7 +657,8 @@ else { rc = ERROR_MORE_DATA; - buffer[(*size)-1] = 0; + if (*size) + buffer[(*size)-1] = 0; } } else