diff --git a/xtrn/ddfilelister/ddfilelister.js b/xtrn/ddfilelister/ddfilelister.js
index 9a72122fa659dd78acdc347ac614111afa605487..d585a3d3a780cccd64248b89baedd980c1bbc8d7 100644
--- a/xtrn/ddfilelister/ddfilelister.js
+++ b/xtrn/ddfilelister/ddfilelister.js
@@ -780,14 +780,18 @@ function doAction(pActionCode, pFileList, pFileListMenu)
 		console.attributes = "N";
 		console.crlf();
 		console.print("\x01cFile # (\x01h1-" + numMenuItems + "\x01n\x01c)\x01h\x01g: \x01g");
-		fileIdx = console.getnum(numMenuItems, 1) - 1;
-		pFileListMenu.selectedItemIdx = fileIdx;
+		var userInput = console.getnum(numMenuItems);
 		console.attributes = "N";
+		if (userInput >= 1 && userInput <= numMenuItems)
+		{
+			fileIdx = userInput - 1;
+			pFileListMenu.selectedItemIdx = fileIdx;
+		}
+		else // User chose to quit (via Q, 0, or not entering a number)
+			return getDefaultActionRetObj();
 	}
 
 	var fileMetadata = pFileList[fileIdx];
-	if (fileMetadata == undefined || typeof(fileMetadata) !== "object")
-		return getDefaultActionRetObj();
 
 	var retObj = null;
 	switch (pActionCode)