Here's another patch you can try, it should cover both problems:
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 1f2a4e8471..2d0b6c4a21 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -115,10 +115,11 @@ project-current
maybe-prompt)
(setq dir (project-prompt-project-dir)
pr (project--find-in-directory dir))))
- (if pr
- (project--add-to-project-list-front pr)
- (project--remove-from-project-list dir)
- (setq pr (cons 'transient dir)))
+ (when maybe-prompt
+ (if pr
+ (project--add-to-project-list-front pr)
+ (project--remove-from-project-list dir)
+ (setq pr (cons 'transient dir))))
pr))
(defun project--find-in-directory (dir)