浏览代码

Fix nasty behavior difference from glibc -- also fixes getline()
-Erik

Eric Andersen 23 年之前
父节点
当前提交
db20984e9b
共有 1 个文件被更改,包括 2 次插入3 次删除
  1. 2 3
      libc/stdio/getdelim.c

+ 2 - 3
libc/stdio/getdelim.c

@@ -41,13 +41,12 @@ ssize_t getdelim(char **linebuf, size_t *linebufsz, int delimiter, FILE *file)
 	int ch;
 	int ch;
 	int idx = 0;
 	int idx = 0;
 
 
-	if ((file == NULL || linebuf==NULL || *linebuf == NULL || *linebufsz == 0)
+	if (file == NULL || linebuf==NULL || linebufsz == NULL) {
-			&& !(*linebuf == NULL && *linebufsz ==0 )) {
 	    __set_errno(EINVAL);
 	    __set_errno(EINVAL);
 	    return -1;
 	    return -1;
 	}
 	}
 
 
-	if (*linebuf == NULL && *linebufsz == 0){
+	if (*linebuf == NULL || *linebufsz < 2) {
 		*linebuf = malloc(GROWBY);
 		*linebuf = malloc(GROWBY);
 		if (!*linebuf) {
 		if (!*linebuf) {
 			__set_errno(ENOMEM);
 			__set_errno(ENOMEM);