[Libva] [PATCH] CreateSurfaces2: forward function return to caller

Xu Guangxin Guangxin.Xu at intel.com
Tue Jun 30 00:21:59 PDT 2015


we did not check following function's return:
i965_surface_native_memory
i965_suface_external_memory
i965_check_alloc_surface_bo
It will be in trouble if underlay buffer allocation is failed.
---
 src/i965_drv_video.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
index cfaab32..b14acf8 100644
--- a/src/i965_drv_video.c
+++ b/src/i965_drv_video.c
@@ -989,9 +989,7 @@ i965_surface_native_memory(VADriverContextP ctx,
         expected_fourcc == VA_FOURCC_YV16)
         tiling = 0;
 
-    i965_check_alloc_surface_bo(ctx, obj_surface, tiling, expected_fourcc, get_sampling_from_fourcc(expected_fourcc));
-
-    return VA_STATUS_SUCCESS;
+    return i965_check_alloc_surface_bo(ctx, obj_surface, tiling, expected_fourcc, get_sampling_from_fourcc(expected_fourcc));
 }
     
 static VAStatus
@@ -1327,21 +1325,23 @@ i965_CreateSurfaces2(
                     }
                 }
             }
-            i965_surface_native_memory(ctx,
-                                       obj_surface,
-                                       format,
-                                       expected_fourcc);
+            vaStatus = i965_surface_native_memory(ctx,
+                                                  obj_surface,
+                                                  format,
+                                                  expected_fourcc);
             break;
 
         case I965_SURFACE_MEM_GEM_FLINK:
         case I965_SURFACE_MEM_DRM_PRIME:
-            i965_suface_external_memory(ctx,
-                                        obj_surface,
-                                        memory_type,
-                                        memory_attibute,
-                                        i);
+            vaStatus = i965_suface_external_memory(ctx,
+                                                   obj_surface,
+                                                   memory_type,
+                                                   memory_attibute,
+                                                   i);
             break;
         }
+        if (VA_STATUS_SUCCESS != vaStatus)
+            break;
     }
 
     /* Error recovery */
-- 
1.9.1



More information about the Libva mailing list