diff --git a/src/uifc/filepick.c b/src/uifc/filepick.c
index 4187c6180291926df47a9e4b2bcfd4c470d81dde..419d15a2df94cc817f3f89bb9b6489359a2f2d2e 100644
--- a/src/uifc/filepick.c
+++ b/src/uifc/filepick.c
@@ -504,7 +504,7 @@ int filepick(uifcapi_t *api, char *title, struct file_pick *fp, char *dir, char
 					sprintf(cfile,"%s%s%s%s",drive,tdir,fname,ext);
 					if(strchr(fname,'*') !=NULL || strchr(fname,'?') !=NULL
 						|| strchr(ext,'*') !=NULL || strchr(ext,'?') !=NULL
-						|| !isdir(cfile)) {
+						|| (!isdir(cfile) && i!='\r' && i!='\n')) {
 						if(opts & UIFC_FP_MSKNOCHG) {
 							sprintf(cfile,"%s%s%s",drive,tdir,cmsk);
 							FREE_AND_NULL(tmplastpath);
@@ -517,6 +517,10 @@ int filepick(uifcapi_t *api, char *title, struct file_pick *fp, char *dir, char
 						}
 						break;
 					}
+					else {
+						if((opts & UIFC_FP_MULTI)!=UIFC_FP_MULTI && (i=='\r' || i!='\n'))
+						fieldmove=0;
+					}
 					if((currfield != CURRENT_PATH) || fieldmove)
 						break;
 					if(isdir(cfile)) {