Remove trailing spaces from the filename in RtlGetFullPathName_U.

diff --git a/dlls/ntdll/path.c b/dlls/ntdll/path.c
index a2c8b08..3edeba4 100644
--- a/dlls/ntdll/path.c
+++ b/dlls/ntdll/path.c
@@ -533,13 +533,18 @@
  */
 static ULONG get_full_path_helper(LPCWSTR name, LPWSTR buffer, ULONG size)
 {
-    ULONG                       reqsize = 0, mark = 0, dep = 0, deplen;
+    ULONG                       reqsize = 0, mark = 0, dep = 0, deplen, name_len;
     DOS_PATHNAME_TYPE           type;
     LPWSTR                      ins_str = NULL;
     LPCWSTR                     ptr;
     const UNICODE_STRING*       cd;
     WCHAR                       tmp[4];
 
+    /* remove trailing spaces (yes, Windows really does that, don't ask) */
+    name_len = strlenW( name );
+    while (name_len && name[name_len-1] == ' ') name_len--;
+    if (!name_len) return 0;
+
     RtlAcquirePebLock();
 
     if (NtCurrentTeb()->Tib.SubSystemTib)  /* FIXME: hack */
@@ -674,7 +679,7 @@
     }
 
     /* enough space ? */
-    deplen = strlenW(name + dep) * sizeof(WCHAR);
+    deplen = (name_len - dep) * sizeof(WCHAR);
     if (reqsize + deplen + sizeof(WCHAR) > size)
     {
         /* not enough space, return need size (including terminating '\0') */
@@ -682,7 +687,8 @@
         goto done;
     }
 
-    memmove(buffer + reqsize / sizeof(WCHAR), name + dep, deplen + sizeof(WCHAR));
+    memmove(buffer + reqsize / sizeof(WCHAR), name + dep, deplen);
+    buffer[(reqsize + deplen) / sizeof(WCHAR)] = 0;
     if (reqsize) memcpy(buffer, ins_str, reqsize);
     reqsize += deplen;
 
@@ -737,6 +743,7 @@
     }
 
     reqsize = get_full_path_helper(name, buffer, size);
+    if (!reqsize) return 0;
     if (reqsize > size)
     {
         LPWSTR tmp = RtlAllocateHeap(GetProcessHeap(), 0, reqsize);
diff --git a/dlls/ntdll/tests/path.c b/dlls/ntdll/tests/path.c
index 702762e..4c6a963 100644
--- a/dlls/ntdll/tests/path.c
+++ b/dlls/ntdll/tests/path.c
@@ -239,6 +239,7 @@
     static const struct test tests[] =
         {
             { "c:/test",                     "c:\\test",         "test"},
+            { "c:/test     ",                "c:\\test",         "test"},
             { "c:/TEST",                     "c:\\test",         "test"},
             { "c:/test/file",                "c:\\test\\file",   "file"},
             { "c:/test/././file",            "c:\\test\\file",   "file"},