Sync to Wine-0_9_4:
Magnus Olsen <magnus(a)itkonsult-olsen.com>
- msi: Fixed deformat_environment to not cut off string.
Bill Medland <billmedland(a)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