浏览代码

media-playback: Fix possible crash on startup

Frame width/height check crash if the frame is not given.

We can reorder width/height check after other precondition checks.

(cherry picked from commit 22c4e11ec8fff64db21c94701d0afcd061b03af1)
jeiea 5 月之前
父节点
当前提交
a9fd4e0d81
共有 1 个文件被更改,包括 6 次插入6 次删除
  1. 6 6
      shared/media-playback/media-playback/media.c

+ 6 - 6
shared/media-playback/media-playback/media.c

@@ -382,12 +382,6 @@ void mp_media_next_video(mp_media_t *m, bool preload)
 	enum video_range_type new_range;
 	AVFrame *f = d->frame;
 
-	if (!f->width || !f->height) {
-		blog(LOG_ERROR, "MP: media frame width or height are zero ('%s': %" PRIu32 "x%" PRIu32 ")", m->path,
-		     f->width, f->height);
-		return;
-	}
-
 	if (!preload) {
 		if (!mp_media_can_play_frame(m, d))
 			return;
@@ -400,6 +394,12 @@ void mp_media_next_video(mp_media_t *m, bool preload)
 		return;
 	}
 
+	if (!f->width || !f->height) {
+		blog(LOG_ERROR, "MP: media frame width or height are zero ('%s': %" PRIu32 "x%" PRIu32 ")", m->path,
+		     f->width, f->height);
+		return;
+	}
+
 	bool flip = false;
 	if (m->swscale) {
 		int ret = sws_scale(m->swscale, (const uint8_t *const *)f->data, f->linesize, 0, f->height,