Proper error handling for fd cleanup in vaapi query

This commit is contained in:
dec05eba
2024-10-02 18:16:53 +02:00
parent fdc4bfe0d2
commit c74c89e028

View File

@@ -170,6 +170,7 @@ static bool get_supported_video_codecs(VADisplay va_dpy, gsr_supported_video_cod
bool gsr_get_supported_video_codecs_vaapi(gsr_supported_video_codecs *video_codecs, const char *card_path, bool cleanup) { bool gsr_get_supported_video_codecs_vaapi(gsr_supported_video_codecs *video_codecs, const char *card_path, bool cleanup) {
memset(video_codecs, 0, sizeof(*video_codecs)); memset(video_codecs, 0, sizeof(*video_codecs));
bool success = false; bool success = false;
int drm_fd = -1;
char render_path[128]; char render_path[128];
if(!gsr_card_path_get_render_path(card_path, render_path)) { if(!gsr_card_path_get_render_path(card_path, render_path)) {
@@ -177,7 +178,7 @@ bool gsr_get_supported_video_codecs_vaapi(gsr_supported_video_codecs *video_code
goto done; goto done;
} }
const int drm_fd = open(render_path, O_RDWR); drm_fd = open(render_path, O_RDWR);
if(drm_fd == -1) { if(drm_fd == -1) {
fprintf(stderr, "gsr error: gsr_get_supported_video_codecs_vaapi: failed to open device %s\n", render_path); fprintf(stderr, "gsr error: gsr_get_supported_video_codecs_vaapi: failed to open device %s\n", render_path);
goto done; goto done;
@@ -193,8 +194,10 @@ bool gsr_get_supported_video_codecs_vaapi(gsr_supported_video_codecs *video_code
} }
done: done:
if(cleanup) if(cleanup) {
close(drm_fd); if(drm_fd > 0)
close(drm_fd);
}
return success; return success;
} }