James Hawkins : msi: Make msi_dialog_dup_property return a copy of the property if the property is empty .

Alexandre Julliard julliard at wine.codeweavers.com
Fri Oct 6 13:37:11 CDT 2006


Module: wine
Branch: master
Commit: 9024a88dd996887a34d10b39231971b22f703143
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9024a88dd996887a34d10b39231971b22f703143

Author: James Hawkins <truiken at gmail.com>
Date:   Thu Oct  5 19:41:13 2006 -0700

msi: Make msi_dialog_dup_property return a copy of the property if the property is empty.

---

 dlls/msi/dialog.c |   34 ++++++++++++----------------------
 1 files changed, 12 insertions(+), 22 deletions(-)

diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c
index ef685e0..11890ac 100644
--- a/dlls/msi/dialog.c
+++ b/dlls/msi/dialog.c
@@ -217,13 +217,18 @@ static LPWSTR msi_get_deformatted_field(
 
 static LPWSTR msi_dialog_dup_property( msi_dialog *dialog, LPCWSTR property, BOOL indirect )
 {
+    LPWSTR prop = NULL;
+
     if (!property)
         return NULL;
 
     if (indirect)
-        return msi_dup_property( dialog->package, property );
+        prop = msi_dup_property( dialog->package, property );
+
+    if (!prop)
+        prop = strdupW( property );
 
-    return strdupW( property );
+    return prop;
 }
 
 msi_dialog *msi_dialog_get_parent( msi_dialog *dialog )
@@ -1469,10 +1474,7 @@ static void msi_dialog_update_pathedit( 
 
     indirect = control->attributes & msidbControlAttributesIndirect;
     prop = msi_dialog_dup_property( dialog, control->property, indirect );
-
-    path = msi_dup_property( dialog->package, prop );
-    if (!path)
-        path = prop;
+    path = msi_dialog_dup_property( dialog, prop, TRUE );
 
     SetWindowTextW( control->hwnd, path );
     SendMessageW( control->hwnd, EM_SETSEL, 0, -1 );
@@ -2171,10 +2173,7 @@ static void msi_dialog_update_directory_
 
     indirect = control->attributes & msidbControlAttributesIndirect;
     prop = msi_dialog_dup_property( dialog, control->property, indirect );
-
-    path = msi_dup_property( dialog->package, prop );
-    if (!path)
-        path = prop;
+    path = msi_dialog_dup_property( dialog, prop, TRUE );
 
     PathStripPathW( path );
     PathRemoveBackslashW( path );
@@ -2231,10 +2230,7 @@ static void msi_dialog_update_directory_
 
     indirect = control->attributes & msidbControlAttributesIndirect;
     prop = msi_dialog_dup_property( dialog, control->property, indirect );
-
-    path = msi_dup_property( dialog->package, prop );
-    if (!path)
-        path = prop;
+    path = msi_dialog_dup_property( dialog, prop, TRUE );
 
     lstrcpyW( dir_spec, path );
     lstrcatW( dir_spec, asterisk );
@@ -2274,10 +2270,7 @@ UINT msi_dialog_directorylist_up( msi_di
     control = msi_dialog_find_control_by_type( dialog, szDirectoryList );
     indirect = control->attributes & msidbControlAttributesIndirect;
     prop = msi_dialog_dup_property( dialog, control->property, indirect );
-
-    path = msi_dup_property( dialog->package, prop );
-    if (!path)
-        path = prop;
+    path = msi_dialog_dup_property( dialog, prop, TRUE );
 
     /* strip off the last directory */
     ptr = PathFindFileNameW( path );
@@ -2326,10 +2319,7 @@ static UINT msi_dialog_dirlist_handler( 
 
     indirect = control->attributes & msidbControlAttributesIndirect;
     prop = msi_dialog_dup_property( dialog, control->property, indirect );
-
-    path = msi_dup_property( dialog->package, prop );
-    if (!path)
-        path = prop;
+    path = msi_dialog_dup_property( dialog, prop, TRUE );
 
     lstrcpyW( new_path, path );
     lstrcatW( new_path, text );




More information about the wine-cvs mailing list