Hacker News new | ask | show | jobs
by malkia 4619 days ago
Isn't this example wrong: (I'm not much familiar with libuv, but reading from the comments it might be):

http://nikhilm.github.io/uvbook/filesystem.html

  void on_read(uv_fs_t *req) {
       uv_fs_req_cleanup(req); // <-- bug? freeing here, later using req ptr?
       if (req->result < 0) {
           fprintf(stderr, "Read error: %s\n", uv_strerror(uv_last_error(uv_default_loop())));
       }
       else if (req->result == 0) {
           uv_fs_t close_req;
           // synchronous
           uv_fs_close(uv_default_loop(), &close_req, open_req.result, NULL);
       }
       else {
           uv_fs_write(uv_default_loop(), &write_req, 1, buffer, req->result, -1, on_write);
       }
   }
1 comments

It's correct. uv_fs_req_cleanup() deletes some private data associated with the uv_fs_t. `result` is part of the public interface and is unaffected.