diff --git a/src/nano.c b/src/nano.c
index d1dba354a57a8289bdf074a3138153f1f5ce54e0..04782ea85ffeab3e8034304658408846f9c86a6a 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -2557,7 +2557,8 @@ int main(int argc, char **argv)
      * non-option argument, and it is followed by at least one other
      * argument, the filename it applies to. */
     if (0 < optind && optind < argc - 1 && argv[optind][0] == '+') {
-	parse_line_column(&argv[optind][1], &startline, &startcol);
+	if (!parse_line_column(&argv[optind][1], &startline, &startcol))
+	    statusline(ALERT, _("Invalid line or column number"));
 	optind++;
     }
 
@@ -2581,9 +2582,10 @@ int main(int argc, char **argv)
 	for (; i < argc; i++) {
 	    /* If there's a +LINE or +LINE,COLUMN flag here, it is followed
 	     * by at least one other argument: the filename it applies to. */
-	    if (i < argc - 1 && argv[i][0] == '+')
-		parse_line_column(&argv[i][1], &iline, &icol);
-	    else {
+	    if (i < argc - 1 && argv[i][0] == '+') {
+		if (!parse_line_column(&argv[i][1], &iline, &icol))
+		    statusline(ALERT, _("Invalid line or column number"));
+	    } else {
 		/* If opening fails, don't try to position the cursor. */
 		if (!open_buffer(argv[i], FALSE))
 		    continue;
diff --git a/src/search.c b/src/search.c
index bf6fcd84c7c81312fa1b161a6c2077cf000c87c9..7ca76e8d17e018d470fab34a550abae29c2508d8 100644
--- a/src/search.c
+++ b/src/search.c
@@ -894,7 +894,7 @@ void do_gotolinecolumn(ssize_t line, ssize_t column, bool use_answer,
 
 	/* Try to extract one or two numbers from the user's response. */
 	if (!parse_line_column(answer, &line, &column)) {
-	    statusbar(_("Invalid line or column number"));
+	    statusline(ALERT, _("Invalid line or column number"));
 	    return;
 	}
     } else {
diff --git a/src/utils.c b/src/utils.c
index bfd9d13c9d625a4fe28661774ec1bc9ef74bb787..74a18fa6ac1e02754c809bfde7d23c1df16b3af6 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -129,7 +129,7 @@ bool parse_line_column(const char *str, ssize_t *line, ssize_t *column)
     firstpart = mallocstrcpy(NULL, str);
     firstpart[comma - str] = '\0';
 
-    retval = parse_num(firstpart, line);
+    retval = parse_num(firstpart, line) && retval;
 
     free(firstpart);