mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	config/keybind.c: Don't overwrite the stack
This commit is contained in:
		
							parent
							
								
									a47931bba2
								
							
						
					
					
						commit
						f28319be54
					
				
					 2 changed files with 9 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -5,6 +5,8 @@
 | 
			
		|||
#include <wlr/types/wlr_keyboard.h>
 | 
			
		||||
#include <xkbcommon/xkbcommon.h>
 | 
			
		||||
 | 
			
		||||
#define MAX_KEYSYMS 32
 | 
			
		||||
 | 
			
		||||
struct keybind {
 | 
			
		||||
	uint32_t modifiers;
 | 
			
		||||
	xkb_keysym_t *keysyms;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,7 @@ struct keybind *
 | 
			
		|||
keybind_create(const char *keybind)
 | 
			
		||||
{
 | 
			
		||||
	struct keybind *k = calloc(1, sizeof(struct keybind));
 | 
			
		||||
	xkb_keysym_t keysyms[32];
 | 
			
		||||
	xkb_keysym_t keysyms[MAX_KEYSYMS];
 | 
			
		||||
	gchar **symnames = g_strsplit(keybind, "-", -1);
 | 
			
		||||
	for (int i = 0; symnames[i]; i++) {
 | 
			
		||||
		char *symname = symnames[i];
 | 
			
		||||
| 
						 | 
				
			
			@ -46,6 +46,12 @@ keybind_create(const char *keybind)
 | 
			
		|||
			}
 | 
			
		||||
			keysyms[k->keysyms_len] = sym;
 | 
			
		||||
			k->keysyms_len++;
 | 
			
		||||
			if (k->keysyms_len == MAX_KEYSYMS) {
 | 
			
		||||
				wlr_log(WLR_ERROR, "There are a lot of fingers involved. "
 | 
			
		||||
					"We stopped counting at %u.", MAX_KEYSYMS);
 | 
			
		||||
				wlr_log(WLR_ERROR, "Offending keybind was %s", keybind);
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	g_strfreev(symnames);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue