diff --git a/loader/module.c b/loader/module.c
index 9d1008e..52d18be 100644
--- a/loader/module.c
+++ b/loader/module.c
@@ -866,37 +866,22 @@
         if ((pcmd = strchr(line, '"'))) /* closing '"' available, too ? */
             len = ++pcmd - line;
     }
-
-    if (!len)
+    else
     {
-        p = strchr(line, ' ');
-        do {
-            len = (p? p-line : strlen(line)) + 1;
-            if (len > namelen - 4) len = namelen - 4;
-            lstrcpynA(name, line, len);
-            if (extension && !strchr(name, '\\') && !strchr(name, '.'))
-                strcat(name, ".exe");
-            if (GetFileAttributesA(name) != -1) {
-                pcmd = p ? p : line+strlen(line);
-                break;
-            }
-            /* if there is a space and no file found yet, include the word
-             * up to the next space too. If there is no next space, just
-             * use the first word.
-             */
-            if (p) {
-                p = strchr(p+1, ' ');
-            } else {
-                p = strchr(line, ' ');
-                len = (p? p-line : strlen(line)) + 1;
-                if (len > namelen - 4)
-                    len = namelen - 4;
-                pcmd = p ? p + 1 : line+strlen(line);
-                break;
-            }
-        } while (1);
+	if((p = strchr(line, ' '))) 
+	{
+		len = p - line;
+		pcmd = p+1;
+	}
+	else
+		len = strlen(line);
+	
+	len++;
     }
+    if(len > (namelen - 4)) len = namelen - 4;
     lstrcpynA(name, line, len);
+    if(extension && (strrchr(name, '.') <= strrchr(name, '\\')) )
+        	strcat(name, ".exe");
     if (after) *after = pcmd;
 }
 
@@ -917,9 +902,6 @@
     DWORD type;
     char name[256];
     LPCSTR cmdline;
-#if 0
-    LPCSTR p = NULL;
-#endif
 
     /* Get name and command line */
 
@@ -932,24 +914,15 @@
     name[0] = '\0';
 
     if (lpApplicationName) {
-        get_executable_name( lpApplicationName, name, sizeof(name), NULL, FALSE);
-#if 0
-        p = strrchr(name, '.');
-        if (p >= name+strlen(name)-4) /* FIXME */
-            *p = '\0';
-#endif
+       get_executable_name( lpApplicationName, name, sizeof(name), NULL, TRUE );
     }
     else {
-      get_executable_name ( lpCommandLine, name, sizeof ( name ), NULL, FALSE );
+       get_executable_name( lpCommandLine, name, sizeof ( name ), NULL, TRUE );
     }
     if (!lpCommandLine) 
       cmdline = lpApplicationName;
     else cmdline = lpCommandLine;
 
-    if (!strchr(name, '\\') && !strchr(name, '.'))
-        strcat(name, ".exe");
-
-
     /* Warn if unsupported features are used */
 
     if (dwCreationFlags & DEBUG_PROCESS)
