Reduce strlcat calls in crucial video_driver_frame function

This commit is contained in:
libretroadmin 2023-06-20 13:38:20 +02:00
parent fa80ec099f
commit 8515fbf652

View File

@ -3375,30 +3375,31 @@ void video_driver_frame(const void *data, unsigned width,
if (video_info.fps_show) if (video_info.fps_show)
{ {
status_text[0] = 'F'; status_text[ buf_pos] = 'F';
status_text[1] = 'P'; status_text[++buf_pos] = 'P';
status_text[2] = 'S'; status_text[++buf_pos] = 'S';
status_text[3] = ':'; status_text[++buf_pos] = ':';
status_text[4] = ' '; status_text[++buf_pos] = ' ';
status_text[5] = '\0'; status_text[++buf_pos] = '\0';
buf_pos = snprintf( buf_pos += snprintf(
status_text + 5, sizeof(status_text) - 5, status_text + buf_pos,
"%6.2f", last_fps) + 5; sizeof(status_text) - buf_pos,
"%6.2f", last_fps);
} }
if (video_info.framecount_show) if (video_info.framecount_show)
{ {
if (status_text[buf_pos-1] != '\0') if (status_text[buf_pos-1] != '\0')
{ {
status_text[buf_pos ] = ' '; status_text[ buf_pos] = ' ';
status_text[buf_pos+1] = '|'; status_text[++buf_pos] = '|';
status_text[buf_pos+2] = '|'; status_text[++buf_pos] = '|';
status_text[buf_pos+3] = ' '; status_text[++buf_pos] = ' ';
status_text[buf_pos+4] = '\0'; status_text[++buf_pos] = '\0';
} }
buf_pos = strlcat(status_text, buf_pos += strlcpy(status_text + buf_pos,
msg_hash_to_str(MSG_FRAMES), msg_hash_to_str(MSG_FRAMES),
sizeof(status_text)); sizeof(status_text) - buf_pos);
status_text[buf_pos ] = ':'; status_text[buf_pos ] = ':';
status_text[++buf_pos] = ' '; status_text[++buf_pos] = ' ';
status_text[++buf_pos] = '\0'; status_text[++buf_pos] = '\0';
@ -3448,13 +3449,15 @@ void video_driver_frame(const void *data, unsigned width,
if (!string_is_empty(status_text)) if (!string_is_empty(status_text))
{ {
video_st->window_title[new_len ] = ' '; video_st->window_title[ new_len ] = ' ';
video_st->window_title[new_len + 1] = '|'; video_st->window_title[++new_len ] = '|';
video_st->window_title[new_len + 2] = '|'; video_st->window_title[++new_len ] = '|';
video_st->window_title[new_len + 3] = ' '; video_st->window_title[++new_len ] = ' ';
video_st->window_title[new_len + 4] = '\0'; video_st->window_title[++new_len ] = '\0';
new_len = strlcat(video_st->window_title, new_len += strlcpy(
status_text, sizeof(video_st->window_title)); video_st->window_title + new_len,
status_text,
sizeof(video_st->window_title) - new_len);
} }
curr_time = new_time; curr_time = new_time;
@ -3510,13 +3513,14 @@ void video_driver_frame(const void *data, unsigned width,
if (!string_is_empty(status_text)) if (!string_is_empty(status_text))
{ {
status_text[buf_pos ] = ' '; status_text[buf_pos ] = ' ';
status_text[buf_pos + 1] = '|'; status_text[++buf_pos ] = '|';
status_text[buf_pos + 2] = '|'; status_text[++buf_pos ] = '|';
status_text[buf_pos + 3] = ' '; status_text[++buf_pos ] = ' ';
status_text[buf_pos + 4] = '\0'; status_text[++buf_pos ] = '\0';
buf_pos = strlcat(status_text, buf_pos += strlcpy(
status_text + buf_pos,
runloop_st->core_status_msg.str, runloop_st->core_status_msg.str,
sizeof(status_text)); sizeof(status_text) - buf_pos);
} }
else else
buf_pos = strlcpy(status_text, buf_pos = strlcpy(status_text,