One small trap to getdelim()/getline() is that the caller needs to free 
lineptr, even if it NULL when called and the call failed, ala:
        char *buf = NULL;
        size_t len = 0;
        ssize_t ret;

        ret = getline(&buf, &len, fp);
        if (ret == -1) {
                free(buf);
                return or do whatever...
        }

Does this make that clear in the manpage?

Philip

Index: stdio/getdelim.3
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/stdio/getdelim.3,v
retrieving revision 1.3
diff -u -p -r1.3 getdelim.3
--- stdio/getdelim.3    7 Oct 2015 16:53:00 -0000       1.3
+++ stdio/getdelim.3    3 Apr 2016 20:59:28 -0000
@@ -81,6 +81,10 @@ It is the responsibility of the caller t
 .Xr free 3
 .Fa *lineptr
 when it is no longer needed.
+Even when it fails,
+.Fn getdelim
+may update
+.Fa *lineptr .
 .Pp
 The
 .Fn getline

Reply via email to