]> granicus.if.org Git - nethack/commitdiff
Fix crashes when copying to clipboard
authorRay Chason <ray.chason@protonmail.com>
Mon, 17 Oct 2022 01:42:42 +0000 (21:42 -0400)
committerRay Chason <ray.chason@protonmail.com>
Mon, 17 Oct 2022 01:42:42 +0000 (21:42 -0400)
win/win32/mhstatus.c

index 0660af8a7633543bd1fcbdad45b6b9cf7d72d1e6..77e0b6900905492f0f9a882dca522a42a66e12a3 100644 (file)
@@ -199,15 +199,17 @@ StatusWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
             size_t space_remaining = msg_data->max_size;
 
             for (int line = 0; line < NHSW_LINES; line++) {
-                mswin_status_line *status_line = data->status_lines[line].lines;
+                mswin_status_line *status_line = &data->status_lines->lines[line];
                 for (int i = 0; i < status_line->status_strings.count; i++) {
                     mswin_status_string * status_string = status_line->status_strings.status_strings[i];
-                    if (status_string->space_in_front) {
-                        strncat(msg_data->buffer, " ", space_remaining);
+                    if (status_string->str != NULL) {
+                        if (status_string->space_in_front) {
+                            strncat(msg_data->buffer, " ", space_remaining);
+                            space_remaining = msg_data->max_size - strlen(msg_data->buffer);
+                        }
+                        strncat(msg_data->buffer, status_string->str, space_remaining);
                         space_remaining = msg_data->max_size - strlen(msg_data->buffer);
                     }
-                    strncat(msg_data->buffer, status_string->str, space_remaining);
-                    space_remaining = msg_data->max_size - strlen(msg_data->buffer);
                 }
                 strncat(msg_data->buffer, "\r\n", space_remaining);
                 space_remaining = msg_data->max_size - strlen(msg_data->buffer);