Browse Source

[components/drivers] update pipe.c

Fixed stackover flow bug when create pipe->fifo
David Lin 5 years ago
parent
commit
ff09587d23
1 changed files with 5 additions and 0 deletions
  1. 5 0
      components/drivers/src/pipe.c

+ 5 - 0
components/drivers/src/pipe.c

@@ -330,6 +330,11 @@ rt_err_t  rt_pipe_open (rt_device_t device, rt_uint16_t oflag)
     if (pipe->fifo == RT_NULL)
     if (pipe->fifo == RT_NULL)
     {
     {
         pipe->fifo = rt_ringbuffer_create(pipe->bufsz);
         pipe->fifo = rt_ringbuffer_create(pipe->bufsz);
+        if (pipe->fifo == RT_NULL)
+        {
+            rt_mutex_release(&(pipe->lock));
+            return -RT_ENOMEM;
+        }
     }
     }
 
 
     rt_mutex_release(&(pipe->lock));
     rt_mutex_release(&(pipe->lock));