Alex Villacís Lasso : user32: DlgDirSelect tacks on a period on filenames without ext.

Alexandre Julliard julliard at winehq.org
Wed Nov 14 07:31:08 CST 2007


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

Author: Alex Villacís Lasso <a_villacis at palosanto.com>
Date:   Sat Nov 10 18:09:08 2007 -0500

user32: DlgDirSelect tacks on a period on filenames without ext.

---

 dlls/user32/dialog.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/dlls/user32/dialog.c b/dlls/user32/dialog.c
index c716969..e7f55de 100644
--- a/dlls/user32/dialog.c
+++ b/dlls/user32/dialog.c
@@ -1683,7 +1683,7 @@ static BOOL DIALOG_DlgDirSelect( HWND hwnd, LPWSTR str, INT len,
     size = SendMessageW(listbox, combo ? CB_GETLBTEXTLEN : LB_GETTEXTLEN, item, 0 );
     if (size == LB_ERR) return FALSE;
 
-    if (!(buffer = HeapAlloc( GetProcessHeap(), 0, (size+1) * sizeof(WCHAR) ))) return FALSE;
+    if (!(buffer = HeapAlloc( GetProcessHeap(), 0, (size+2) * sizeof(WCHAR) ))) return FALSE;
 
     SendMessageW( listbox, combo ? CB_GETLBTEXT : LB_GETTEXT, item, (LPARAM)buffer );
 
@@ -1701,7 +1701,16 @@ static BOOL DIALOG_DlgDirSelect( HWND hwnd, LPWSTR str, INT len,
             ptr = buffer + 1;
         }
     }
-    else ptr = buffer;
+    else
+    {
+        /* Filenames without a dot extension must have one tacked at the end */
+        if (strchrW(buffer, '.') == NULL)
+        {
+            buffer[strlenW(buffer)+1] = '\0';
+            buffer[strlenW(buffer)] = '.';
+        }
+        ptr = buffer;
+    }
 
     if (!unicode)
     {




More information about the wine-cvs mailing list