FLTK logo

[master] deeb977 - Wayland: fix memory leak on FL_KEYUP events

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[master] deeb977 - Wayland: fix memory leak on FL_KEYUP events "Albrecht Schlosser" Sep 06, 2022  
 
commit deeb977c2e99cbd2f6ccfb781c34c7d60de8ebce
Author:     Albrecht Schlosser <albrechts.fltk@online.de>
AuthorDate: Tue Sep 6 20:04:33 2022 +0200
Commit:     Albrecht Schlosser <albrechts.fltk@online.de>
CommitDate: Tue Sep 6 20:04:33 2022 +0200

    Wayland: fix memory leak on FL_KEYUP events
    
    The old code would allocate memory on FL_KEYDOWN and FL_KEYUP events
    and never free the latter.
    
    The fix is to allocate memory only on FL_KEYDOWN events which will
    be free'd later as intended.
    
    Also fix two unrelated whitespace errors.

 src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
index 9ef33ad..b12b32b 100644
--- src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
+++ src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
@@ -711,11 +711,12 @@ fprintf(stderr, "key %s: sym: %-12s(%d) code:%u fl_win=%p, ", action, buf, sym,
     Fl::e_is_click = 0;
     Fl::handle(event, win);
   }
-  key_repeat_data_t *key_repeat_data = new key_repeat_data_t;
-  key_repeat_data->time = time;
-  key_repeat_data->window = win;
-  if (event == FL_KEYDOWN && status == XKB_COMPOSE_NOTHING && !(sym >= FL_Shift_L && sym <= FL_Alt_R))
+  if (event == FL_KEYDOWN && status == XKB_COMPOSE_NOTHING && !(sym >= FL_Shift_L && sym <= FL_Alt_R)) {
+    key_repeat_data_t *key_repeat_data = new key_repeat_data_t;
+    key_repeat_data->time = time;
+    key_repeat_data->window = win;
     Fl::add_timeout(KEY_REPEAT_DELAY, (Fl_Timeout_Handler)key_repeat_timer_cb, key_repeat_data);
+  }
 }
 
 static void wl_keyboard_leave(void *data, struct wl_keyboard *wl_keyboard,
@@ -1112,7 +1113,7 @@ void Fl_Wayland_Screen_Driver::open_display_platform() {
     Fl::screen_driver()->open_display();
     return;
   }
-  
+
   if (!wl_display) {
     wl_display = wl_display_connect(NULL);
     if (!wl_display) {
@@ -1485,7 +1486,7 @@ void Fl_Wayland_Screen_Driver::reset_spot() {
 }
 
 
-struct wl_display *fl_wl_display() {  
+struct wl_display *fl_wl_display() {
   if (!Fl_Wayland_Screen_Driver::wl_display || !Fl_Wayland_Screen_Driver::wl_registry) return NULL;
   return Fl_Wayland_Screen_Driver::wl_display;
 }
Direct Link to Message ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.