From 3cba1580fe6633c4b21efb2fd6c69c2a4b2c01fb Mon Sep 17 00:00:00 2001 From: Paul Gofman Date: Wed, 27 Mar 2024 11:40:32 -0600 Subject: [PATCH] lsteamclient: Convert callbacks with a best guess even if specified message length is too short. CW-Bug-Id: #23620 --- lsteamclient/unixlib.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lsteamclient/unixlib.cpp b/lsteamclient/unixlib.cpp index 73353926..098c966e 100644 --- a/lsteamclient/unixlib.cpp +++ b/lsteamclient/unixlib.cpp @@ -698,8 +698,8 @@ void *alloc_callback_wtou( int id, void *callback, int *callback_len ) if (!best) { - WARN( "len %d is too small for callback %d.\n", *callback_len, id ); - return callback; + ERR( "len %d is too small for callback %d, using default.\n", *callback_len, id ); + best = find_first_callback_def_by_id( id ); } if (best->w_callback_len != *callback_len) WARN( "Found len %d for id %d, len %d.\n", best->w_callback_len, id, *callback_len ); @@ -726,7 +726,10 @@ void convert_callback_utow(int id, void *u_callback, int u_callback_len, void *w best = c; break; } - if (!best && c->u_callback_len == u_callback_len && c->w_callback_len <= w_callback_len) + if ((!best || best->w_callback_len > w_callback_len) + && c->u_callback_len == u_callback_len && c->w_callback_len <= w_callback_len) + best = c; + if (!best && c->u_callback_len == u_callback_len) best = c; ++c; }