diff options
Diffstat (limited to 'nuttx/drivers/pipe.c')
-rw-r--r-- | nuttx/drivers/pipe.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/nuttx/drivers/pipe.c b/nuttx/drivers/pipe.c index 8c06974b1..5e0b2f6e5 100644 --- a/nuttx/drivers/pipe.c +++ b/nuttx/drivers/pipe.c @@ -133,7 +133,6 @@ static int pipe_close(FAR struct file *filep) { struct inode *inode = filep->f_inode; struct pipe_dev_s *dev = inode->i_private; - ubyte pipeno; int ret; /* Some sanity checking */ @@ -143,16 +142,15 @@ static int pipe_close(FAR struct file *filep) return -EBADF; } #endif - pipeno = dev->d_pipeno; /* Perform common close operations */ ret = pipecommon_close(filep); - if (ret == 0 && !inode->i_private) + if (ret == 0 && dev->d_refs == 0) { - /* Release the pipe */ + /* Release the pipe when there are no further open references to it. */ - pipe_free(pipeno); + pipe_free(dev->d_pipeno); } return ret; } |