浏览代码

suppress null termination when fgets reads EOF with no data

the C standard requires that "the contents of the array remain
unchanged" in this case.

this patch also changes the behavior on read errors, but in that case
"the array contents are indeterminate", so the application cannot
inspect them anyway.
Rich Felker 10 年之前
父节点
当前提交
402611c3ba
共有 1 个文件被更改,包括 1 次插入1 次删除
  1. 1 1
      src/stdio/fgets.c

+ 1 - 1
src/stdio/fgets.c

@@ -34,7 +34,7 @@ char *fgets(char *restrict s, int n, FILE *restrict f)
 		n--;
 		if ((*p++ = c) == '\n') break;
 	}
-	*p = 0;
+	if (s) *p = 0;
 
 	FUNLOCK(f);