Jelajahi Sumber

Update pipe.c

David Lin 5 tahun lalu
induk
melakukan
e9d930070d
1 mengubah file dengan 10 tambahan dan 4 penghapusan
  1. 10 4
      components/drivers/src/pipe.c

+ 10 - 4
components/drivers/src/pipe.c

@@ -323,8 +323,14 @@ static const struct dfs_file_ops pipe_fops =
 rt_err_t  rt_pipe_open (rt_device_t device, rt_uint16_t oflag)
 {
     rt_pipe_t *pipe = (rt_pipe_t *)device;
+    rt_err_t ret = RT_EOK;
 
-    if (device == RT_NULL) return -RT_EINVAL;
+    if (device == RT_NULL)
+    {
+        ret = -RT_EINVAL;
+        goto __exit;
+    }
+    
     rt_mutex_take(&(pipe->lock), RT_WAITING_FOREVER);
 
     if (pipe->fifo == RT_NULL)
@@ -332,14 +338,14 @@ rt_err_t  rt_pipe_open (rt_device_t device, rt_uint16_t oflag)
         pipe->fifo = rt_ringbuffer_create(pipe->bufsz);
         if (pipe->fifo == RT_NULL)
         {
-            rt_mutex_release(&(pipe->lock));
-            return -RT_ENOMEM;
+            ret = -RT_ENOMEM;
         }
     }
 
     rt_mutex_release(&(pipe->lock));
 
-    return RT_EOK;
+__exit:
+    return ret;
 }
 
 rt_err_t  rt_pipe_close  (rt_device_t device)