code: 9ferno

Download patch

ref: f1a35b52fa5708a9cedd556dbe1399ad7be2b519
parent: 003f169c3ee40cf7b77219cef10af9029ce23b2d
author: 9ferno <gophone2015@gmail.com>
date: Mon Jan 10 21:18:29 EST 2022

terminate on 0 or -1 return value

--- a/os/pc64/bindings.s
+++ b/os/pc64/bindings.s
@@ -133,9 +133,12 @@
 	MOVQ 24(SP), UP
 	C_TO_F_1
 
-	TESTQ TOP, TOP		/* check read return value */
+	CMPQ TOP, $-1		/* return value == -1? */
+	JEQ fsread_checkfd	/* return value = -1 */
+	TESTQ TOP, TOP		/* check if read return value == 0 */
 	JNZ fsread_continue
-	MOVQ 32(SP), CX		/* read return value == 0 */
+fsread_checkfd:
+	MOVQ 32(SP), CX		/* read return value == 0, check if fd is stdin */
 	TESTQ CX, CX
 	JNZ fsread_continue
 	JMP terminate(SB)	/* and fd == 0, terminate */