Fix chunking of t=k not handling metadata present only on first chunk

This commit is contained in:
Kovid Goyal
2026-04-19 12:52:00 +05:30
parent 13add3532b
commit dc9bf889a6
3 changed files with 15 additions and 2 deletions

View File

@@ -1238,6 +1238,7 @@ drag_free_offer(Window *w) {
ds.state = DRAG_SOURCE_NONE;
ds.pre_sent_total_sz = 0;
ds.images_sent_total_sz = 0;
zero_at_ptr(&ds.in_flight_remote_file_data);
}
static void
@@ -1907,6 +1908,16 @@ void
drag_remote_file_data(
Window *w, int32_t x, int32_t y, int32_t X, int32_t Y, bool has_more, const uint8_t *payload, size_t payload_sz
) {
if (ds.in_flight_remote_file_data.active) {
x = ds.in_flight_remote_file_data.x; y = ds.in_flight_remote_file_data.y;
ds.in_flight_remote_file_data.Y = Y; ds.in_flight_remote_file_data.X = X;
}
if (!has_more) zero_at_ptr(&ds.in_flight_remote_file_data);
else if (!ds.in_flight_remote_file_data.active) {
ds.in_flight_remote_file_data.active = true;
ds.in_flight_remote_file_data.x = x; ds.in_flight_remote_file_data.y = y;
ds.in_flight_remote_file_data.Y = Y; ds.in_flight_remote_file_data.X = X;
}
size_t item_idx = ds.num_mimes;
for (size_t i = 0; i < ds.num_mimes; i++) {
if (ds.items[i].requested_remote_files) {

View File

@@ -319,6 +319,7 @@ typedef struct Window {
struct { double x, y; monotonic_t at; } initial_left_press;
char *mimes_buf; size_t num_mimes, bufsz;
size_t total_remote_data_size;
struct { int32_t x, y, X, Y; bool active; } in_flight_remote_file_data;
struct {
const char *mime_type; uint8_t *optional_data; size_t data_size, data_capacity; base64_state base64_state;
bool data_decode_initialized, is_uri_list, requested_remote_files;