svn commit: r306380 - head/sys/boot/common

Toomas Soome tsoome at FreeBSD.org
Tue Sep 27 20:40:45 UTC 2016


Author: tsoome
Date: Tue Sep 27 20:40:44 2016
New Revision: 306380
URL: https://svnweb.freebsd.org/changeset/base/306380

Log:
  loader command interpreter should reset command_errmsg
  
  The command interpreter does leave command_errmsg as is after printing its
  content, assuming the next command will reset it in bf_command(). However,
  in case the forth native word is defined as builtin, the bf_command is not
  used and forth words will also end up the command_errmsg content printed.
  
  Since command_errmsg is pointer to actual error message, which can be static
  read only string, we can not just set *command_errmsg = '\0', instead we need
  to reset the pointer itself.
  
  Illumos issue: https://www.illumos.org/issues/7405
  
  Reported by: Igor Kozhukhov.
  Reviewed by:	allanjude
  Approved by:	allanjude (mentor)
  Differential Revision:	https://reviews.freebsd.org/D8032

Modified:
  head/sys/boot/common/interp_forth.c

Modified: head/sys/boot/common/interp_forth.c
==============================================================================
--- head/sys/boot/common/interp_forth.c	Tue Sep 27 19:36:12 2016	(r306379)
+++ head/sys/boot/common/interp_forth.c	Tue Sep 27 20:40:44 2016	(r306380)
@@ -325,13 +325,15 @@ bf_run(char *line)
 	printf("Parse error!\n");
 	break;
     default:
-        /* Hopefully, all other codes filled this buffer */
-	printf("%s\n", command_errmsg);
+	if (command_errmsg != NULL) {
+	    printf("%s\n", command_errmsg);
+	    command_errmsg = NULL;
+	}
     }
     
     if (result == VM_USEREXIT)
 	panic("interpreter exit");
     setenv("interpret", bf_vm->state ? "" : "OK", 1);
 
-    return result;
+    return (result);
 }


More information about the svn-src-head mailing list