Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| 95e29079 | 2021-03-18 12:22:34 | xkbcomp: plug a potential memory leak libxkbcommon-1.0.3/src/xkbcomp/ast-build.c:526: leaked_storage: Variable "file" going out of scope leaks the storage it points to. Where we exit the loop early, we don't release the various allocated memory. Make this patch more obvious my moving the declaration for those into the loop as well, this way we know that they aren't used outside the loop anywhere. Found by coverity Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| fbf087ea | 2020-11-23 19:51:04 | keymap-dump: follow xkbcomp in printing affect=both in pointer actions It is equivalent to nothing but good to match up. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| afdc9cee | 2020-10-19 10:49:37 | xkbcomp: where a keysym cannot be resolved, set it to NoSymbol Where resolve_keysym fails we warn but use the otherwise uninitialized variable as our keysym. That later ends up in the keymap as random garbage hex value. Simplest test case, set this in the 'us' keymap: key <TLDE> { [ xyz ] }; And without this patch we get random garbage: ./build/xkbcli-compile-keymap --layout us | grep TLDE: key <TLDE> { [ 0x018a5cf0 ] }; With this patch, we now get NoSymbol: ./build/xkbcli-compile-keymap --layout us | grep TLDE: key <TLDE> { [ NoSymbol ] }; | ||
| 69713ce3 | 2020-09-11 05:06:23 | parser: fix another format string for int64_t (#191) | ||
| d7b39f6f | 2020-07-10 08:50:02 | Add /etc/xkb as extra lookup path for system data files This completes the usual triplet of configuration locations available for most processes: - vendor-provided data files in /usr/share/X11/xkb - system-specific data files in /etc/xkb - user-specific data files in $XDG_CONFIG_HOME/xkb The default lookup order user, system, vendor, just like everything else that uses these conventions. For include directives in rules files, the '%E' resolves to that path. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| 05d6efc4 | 2020-07-10 15:16:50 | xkbcomp: allow including kccgst files from other paths Previously, a 'symbols/us' file in path A would shadow the same file in path B. This is suboptimal, we rarely need to hide the system files - we care mostly about *extending* them. By continuing to check other lookup paths, we make it possible for a XDG_CONFIG_HOME/xkb/symbols/us file to have sections including those from /usr/share/X11/xkb/symbols/us. Note that this is not possible for rules files which need to be manually controlled to get the right bits resolved. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| bbc7005b | 2020-07-27 11:55:32 | xkbcomp: simplify the include path handling Streamline the code a bit - instead of handling all the if (!file) conditions handle the case of where we have a file and jump to the end. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| 351b4b9c | 2020-07-27 11:48:29 | xkbcomp: move the logging of include paths into a helper function No functional changes, prep work for some other refacturing. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| dcb6c7b8 | 2020-07-10 15:13:38 | xkbcomp: return NULL, not false in place of a FILE* Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| d4b78a5f | 2020-07-10 15:01:31 | xkbcomp: simplify buffer handling in the include handling Don't do the realloc dance, just asprintf to the buffer and move on. The check is likely pointless anyway, if we run out of asprintf size, log_error will probably blow up as well. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| fadfb13c | 2019-12-28 14:19:22 | xkbcomp/rules: support \r\n line endings Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| da4a90c1 | 2019-12-28 13:49:40 | Open files in binary mode This turns off some misfeatures on Windows, and does nothing on POSIX. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 521bb498 | 2019-12-27 22:08:57 | xkbcomp: remove cast which triggers warning on gcc Will need some other way to take care of the warning on MSVC. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| fbd0e643 | 2019-12-27 21:51:34 | xkbcomp: make a couple of casts explicit to mark them as checked This acknowledges some "possible loss of data cast" warnings from MSVC. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 1849158a | 2019-12-27 15:10:10 | xkbcomp/keywords: regenerate with newer gperf Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 823708b7 | 2019-12-27 14:51:31 | parser: fix format string for int64_t Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 40bea8e9 | 2019-12-27 14:52:49 | xkbcomp: fix wrong return type Detected by MSVC: xkbcomp\xkbcomp.c(111): warning C4047: 'return': 'bool' differs in levels of indirection from 'void *' Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 6ca1a0c9 | 2019-12-27 14:17:55 | parser: use int64_t for all numbers Don't use int which can have different size on different machines. Also avoid some warnings from MSVC: xkbcomp/parser.y(760): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data xkbcomp/parser.y(761): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data xkbcomp/parser.y(767): warning C4244: '=': conversion from 'int64_t' to 'int', possible loss of data Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 40aab05e | 2019-12-27 13:03:20 | build: include config.h manually Previously we included it with an `-include` compiler directive. But that's not portable. And it's better to be explicit anyway. Every .c file should have `include "config.h"` first thing. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 34122f9f | 2019-12-27 12:34:49 | utils: use MIN/MAX instead of min/max min/max symbols conflict on some systems (msvc), so just use the macros. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| ade13130 | 2019-12-27 12:22:37 | xkbcomp: downgrade "Symbol added to modifier map for multiple modifiers" log to a warning This condition happens in xkeyboard-config keymaps and seems hard to fix. Currently it incessantly spams people's logs who have no idea what to do about it. So downgrade to "warning" level, so it doesn't show up by default. When working on keymaps, set `XKB_LOG_LEVEL=debug XKB_LOG_VERBOSITY=10` to see all possible messages. Refs https://github.com/xkbcommon/libxkbcommon/issues/111 Fixes https://github.com/xkbcommon/libxkbcommon/issues/128 Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 00f31e0d | 2019-11-13 11:38:39 | rules: eliminate an extra fopen/fclose cycle FindXkbFileInPath() opens the file so we're guaranteed that the file not only exists, but that we can read it. Changing that would alter behavior so instead let's just pass that file handle along and do the same for include files. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| ca033a29 | 2019-09-03 11:23:14 | rules: add include statements to rules files The majority use-case for extending XKB on a machine is to override one or a few keys with custom keycodes, not to define whole layouts. Previously, we relied on the rules file to be a single file, making it hard to extend. libxkbcommon parses $XDG_CONFIG_HOME/xkb/ but that only works as long as there is a rule that matches the user-specified RMLVO. This works for MLV but not for options which don't have a wildcard defined. Users have to copy the whole rules file and then work from there - not something easy to extend and maintain. This patch adds a new ! include directive to rules files that allows including another file. The file path must be without quotes and may not start with the literal "include". Two directives are supported, %H to $HOME and %S for the system-installed rules directory (usually /usr/share/X11/xkb/rules). A user would typically use a custom rules file like this: ! option = symbols custom:foo = +custom(foo) custom:bar = +custom(baz) ! include %S/evdev Where the above defines the two options and then includes the system-installed evdev rule. Since most current implementations default to loading the "evdev" ruleset, it's best to name this $XDG_CONFIG_HOME/xkb/rules/evdev, but any valid name is allowed. The include functionally replaces the line with the content of the included file which means the behavior of rules files is maintained. Specifically, custom options must be defined before including another file because the first match usually wins. In other words, the following ruleset will not assign my_model as one would expect: ! include %S/evdev ! model = symbols my_model = +custom(foo) The default evdev ruleset has wildcards for model and those match before the my_model is hit. The actual resolved components need only be in one of the XKB lookup directories, e.g. for the example above: $ cat $XDG_CONFIG_HOME/xkb/symbols/custom partial alphanumeric_keys xkb_symbols "foo" { key <TLDE> { [ VoidSymbol ] }; }; partial alphanumeric_keys xkb_symbols "baz" { key <AB01> { [ k, K ] }; }; This can then be loaded with the XKB option "custom:foo,custom:bar". The use of "custom" is just as an example, there are no naming requirements beyond avoiding already-used ones. Also note the bar/baz above - the option names don't have to match the component names. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| 3c57b328 | 2019-11-12 15:27:22 | rules: move the matcher result handling to the caller This shouldn't be processed in the matcher itself, especially in the glorious future when we can have nested matchers. Only handle this once in the caller to the original parsed file. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| 2ec07b62 | 2019-11-12 14:19:55 | rules: put the scanner on the stack This allows nesting the scanner for the future !include directive. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| bb7551a6 | 2019-11-12 15:25:16 | rules: simplify an error path Initialize to NULL so we don't have to care about whether the cleanups can be called or not. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| d9b98856 | 2019-11-12 14:39:47 | rules: rename a variable from 's' to 'str' To avoid name conflicts with a future patch. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| 2a578a60 | 2019-11-12 14:17:44 | rules: drop the matcher_err() macro and use scanner_err directly No functional changes, this is what the macro expanded to anyway. Prep work for putting the scanner on the stack and removing it from the matcher struct. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| f57c13ea | 2019-09-03 10:56:01 | rules: factor out the function to parse a rules file No functional changes, this just makes the part to parse a single rules file re-usable. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| a237f4f6 | 2019-12-14 13:44:33 | parser: fix the remaining pointer chasing Fix the TODO added in 7c42945. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 7c42945e | 2019-11-13 22:41:38 | parser: fix quadratic pointer chasing In the AST, lists (e.g. the list of statements in a file) are kept in singly-linked lists -- each AST node has a `next` pointer available for this purpose. Previously, a node was added to the list by starting from the head, chasing to the last, and appending. So creating a list of length N would take ~N^2/2 pointer dereferences. Now, we always (temporarily) keep the last as well, so appending is O(1) instead of O(N). Given a keymap xkb_keymap { xkb_keycodes { minimum = 8; minimum = 8; minimum = 8; minimum = 8; minimum = 8; [... repeated N times ...] }; xkb_types {}; xkb_compat {}; xkb_symbols {}; }; The compilation times are N | Before | After --------|----------|------- 10,000 | 0.407s | 0.006s 20,000 | 1.851s | 0.015s 30,000 | 5.737s | 0.021s 40,000 | 12.759s | 0.023s 50,000 | 21.489s | 0.035s 60,000 | 40.473s | 0.041s 70,000 | 53.336s | 0.039s 80,000 | 72.485s | 0.044s 90,000 | 94.703s | 0.048s 100,000 | 118.390s | 0.057s Another option is to ditch the linked lists and use arrays instead. I got it to work, but its more involved and allocation heavy so turns out to be worse without further optimizations. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| f9b95c06 | 2019-11-13 23:37:47 | parser: remove an unneeded check Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 3d43f480 | 2019-11-12 22:31:46 | compat: reject interpret modifier predicate with more than one value Given interpret ISO_Level3_Shift+AnyOf(all,extraneous) { ... }; Previously, extraneous (and further) was ignored. Now it's rejected. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 7d44c7a9 | 2019-11-12 22:09:19 | expr: fix log message on some unexpected expression types Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 406beeca | 2019-11-12 22:06:02 | Replace some tabs that sneaked in with spaces Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 322cd856 | 2019-11-12 20:34:31 | parser: fix merge mode only applied to first vmod in a virtual_modifiers statement Given augment virtual_modifiers NumLock,Alt,LevelThree Previously it was expanded (directly in the parser) to augment virtual_modifiers NumLock; virtual_modifiers Alt; virtual_modifiers LevelThree; Now it expands to augment virtual_modifiers NumLock; augment virtual_modifiers Alt; augment virtual_modifiers LevelThree; Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 400cc849 | 2019-11-12 20:04:13 | ast: use a separate expr struct for action list Currently it's under UnaryExpr, which just doesn't make sense. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 8c62d48c | 2019-11-12 19:16:08 | ast-build: get rid of unhelpful macro Straightforward code is better here. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 2af474e8 | 2019-11-02 13:31:44 | parser: get rid of "stealing" atoms This requires (well, at least implemented by) casting away `const` which is undefined behavior, and clang started to warn about it. The micro optimization didn't save too many allocations, anyway. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| 076047b2 | 2019-10-16 10:32:19 | keymap-dump: use consistent capitalization for "Group<N>" It's used capitalized everywhere except a couple places. Signed-off-by: Ran Benita <ran@unusedvar.com> | ||
| a6ed0304 | 2019-10-16 10:27:12 | keymap-dump: fix invalid names used for levels above 8 xkbcomp only accepts the "Level" prefix for a level name for levels 1 to 8, but the keymap dumping code added it always, e.g. "Level15". The plain integer, e.g. "8", "15" is always accepted, so just use that. Fixes https://github.com/xkbcommon/libxkbcommon/issues/113 Signed-off-by: Ran Benita <ran@unusedvar.com> Reported-by: progandy | ||
| 75d1110c | 2019-03-23 23:29:29 | symbols: add a comment to suppress warning from code analyzers Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru> | ||
| 31f1f355 | 2018-09-30 16:04:29 | Fix off-by-one error in index check in xkb_file_type_to_string Found by Oracle's Parfait 2.2 static analyzer: Error: Buffer overrun Read outside array bounds [read-outside-array-bounds] (CWE 125): In array dereference of xkb_file_type_strings[type] with index type Array size is 56 bytes, index <= 56 at line 734 of src/xkbcomp/ast-build.c in function 'xkb_file_type_to_string'. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> | ||
| bb4909d2 | 2017-10-30 11:21:55 | Fail expression lookup on invalid atoms If we fail atom lookup, then we should not claim that we successfully looked up the expression. Signed-off-by: Daniel Stone <daniels@collabora.com> | ||
| 38e1766b | 2017-06-26 17:21:45 | xkbcomp: Don't falsely promise from ExprResolveLhs Every user of ExprReturnLhs goes on to unconditionally dereference the field return, which can be NULL if xkb_intern_atom fails. Return false if this is the case, so we fail safely. testcase: splice geometry data into interp Signed-off-by: Daniel Stone <daniels@collabora.com> | ||
| 4e2ee9c3 | 2017-06-26 17:18:16 | xkbcomp: Don't explode on invalid virtual modifiers testcase: 'virtualModifiers=LevelThreC' Signed-off-by: Daniel Stone <daniels@collabora.com> | ||
| 96df3106 | 2017-06-26 17:12:29 | xkbcomp: Don't crash on no-op modmask expressions If we have an expression of the form 'l1' in an interp section, we unconditionally try to dereference its args, even if it has none. Signed-off-by: Daniel Stone <daniels@collabora.com> | ||
| a8ea7a1d | 2017-06-26 16:45:16 | parser: Don't set more maps when we don't have any If the scanner indicates that we might have something which looks like a map, but the parser in fact fails to create that map, we will try to access the map regardless. Stop doing that. testcase: 'xkb_keymap {' -> '#kb_keymap' Signed-off-by: Daniel Stone <daniels@collabora.com> | ||
| c8168297 | 2018-08-01 18:47:24 | action: make a note that we may not null-terminate private strings Coverity complains that a 7-byte string may not be null-terminated when copied into act->data (size 7). This is fine, make a note of it. All the strings in xkeyboard-config only use 6 bytes + null terminator so this won't be an issue. The server (the only user of these) uses an 8-byte array and forcibly null-terminates the string, see XkbDDXPrivate(). Everything else treats it as byte-array size 7 anyway so whether it's null-terminated doesn't matter. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| c1e5ac16 | 2018-07-30 14:11:46 | xkbcomp: fix pointer value for FreeStmt Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| badb428e | 2018-07-23 11:48:35 | keycodes: don't try to copy zero key aliases Move the aliases copy to within the (num_key_aliases > 0) block. Passing info->aliases into this fuction with invalid aliases will cause log messages but num_key_aliases stays on 0. The key_aliases array is never allocated and remains NULL. We then loop through the aliases, causing a null-pointer dereference. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> | ||
| 917636b1 | 2018-03-11 17:07:06 | xkbcomp: fix crash when parsing an xkb_geometry section xkb_geometry sections are ignored; previously the had done so by returning NULL for the section's XkbFile, however some sections of the code do not expect this. Instead, create an XkbFile for it, it will never be processes and discarded later. Caught with the afl fuzzer. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| e3cacae7 | 2018-03-10 23:32:12 | xkbcomp: fix crashes in the parser when geometry tokens appear In the XKB format, floats and various keywords can only be used in the xkb_geometry section. xkbcommon removed support xkb_geometry, but still parses it for backward compatibility. As part of ignoring it, the float AST node and various keywords were removed, and instead NULL was returned by their parsing actions. However, the rest of the code does not handle NULLs, and so when they appear crashes usually ensue. To fix this, restore the float AST node and the ignored keywords. None of the evaluating code expects them, so nice error are displayed. Caught with the afl fuzzer. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 1f9d1248 | 2018-03-10 23:10:47 | xkbcomp: fix stack overflow when evaluating boolean negation The expression evaluator would go into an infinite recursion when evaluating something like this as a boolean: `!True`. Instead of recursing to just `True` and negating, it recursed to `!True` itself again. Bug inherited from xkbcomp. Caught with the afl fuzzer. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 2963e29f | 2017-12-12 14:43:24 | xkbcomp/ast-build: fix memory leak when appending multi-keysyms `syms` was not freed. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 26453b84 | 2017-12-12 14:30:21 | keymap: fix NULL dereference when dumping the default fallback type The default fallback type uses type->level_names = NULL but the keymap-dump code was not checking this case. Instead of adding more workarounds and possible bugs (e.g. previous commit), let's just keep the number of level names separately. This has the additional advantage retains extraneous level name if someone adds them for some reason. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 9f85d6b7 | 2017-12-12 14:02:17 | xkbcomp/types: fix types being assigned the wrong number of levels in some circumstances The buggy code assigned the number of levels based on the number of level names in the definition, instead of the actual number of levels! This would completely break type definitions which do not give names to levels. This was not noticed for so long because xkeyboard-config always gives names to all levels. This regressed in 61fed8dab9b8e27981f36ffc96666d7376546e30. Reported-by: Gatis Paeglis <gatis.paeglis@qt.io> Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 41f10188 | 2017-09-08 12:16:13 | expr: paper over a maybe-uninitialized warning Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 993f4837 | 2017-07-31 18:16:37 | build: fix out-of-tree build The change in d44ba48 removed -I$(top_builddir)/src/xkbcomp, but this is needed in order to find the generated parser.h file which is put in the build dir. I also added -I$(top_builddir)/src in order to match the meson behavior. Fixes https://github.com/xkbcommon/libxkbcommon/issues/50 Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| ce38f96e | 2017-04-11 15:09:23 | Add explicit fallthrough case statements When we fall through to another label in a case, add an explicit comment noting so, to quiet GCC 7's warnings. Signed-off-by: Daniel Stone <daniels@collabora.com> | ||
| 0dd610fb | 2016-06-09 16:32:05 | keymap-dump: use consistent order set/latch/lock (style) Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 39082082 | 2016-02-28 00:33:19 | keymap: share LevelsSameSyms() The function is generic enough. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 2cca0289 | 2015-11-19 00:44:27 | src/utils: change map_file to not take const string argument map_file() uses PROT_READ, so const seems fitting; however unmap_file calls munmap/free, which do not take const, so an UNCONSTIFY is needed. To avoid the UNCONSTIFY hack, which is likely undefined behavior or some such, just remove the const. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 91620179 | 2014-10-23 21:03:13 | keycodes: use correct printf format Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| c03834a1 | 2014-10-23 21:00:20 | Reduce variable scopes Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 5e3615b2 | 2014-10-18 20:04:57 | ast-build: remove log message about allocation failure We don't do so anywhere else, so until we have something comprehensive, let's not so here. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 4a660d7f | 2014-10-18 19:47:19 | xkbcomp: remove file->topName It is useless. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 96a29ede | 2014-10-18 19:22:56 | xkbcomp/keymap: remove useless free() Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| a4c667ad | 2014-10-17 00:13:48 | symbols: don't warn about conflicting syms if they are the same Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 2e5530ad | 2014-10-16 18:51:51 | parser: bring back warning about includes of files with no default Using the same format as xkbcomp. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| a3116f97 | 2014-10-13 18:51:12 | compose/parser: fix segfault when including The keysym cache for the new scanner was not initialized. To avoid such errors also in the future, require passing the priv argument in scanner_init(), instead of initializing it separately. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 8a0acf2c | 2014-10-07 23:42:08 | scanner-utils: optimize one-line comments Compose files have a lot of those. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 725ae134 | 2014-09-25 22:01:17 | keymap: rename XkbKeyGroupWidth to XkbKeyNumLevels The "width" terminology comes from the group*width+level layout of the keysyms in a key, as used in the old implementations. We don't keep all the keysyms of a key in one array so change it to a more accurate name. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 2c259f17 | 2014-09-25 21:55:52 | symbols: improve FindKeyForSymbol() A bit more involved, but can short circuit. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 485b736f | 2014-09-25 21:25:39 | symbols: use correct max value xkb_level_index_t was initially uint16_t, now it's 32. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 68962aa1 | 2014-09-21 23:54:34 | keymap-dump: combine modifier_map's with the same modifier A bit less efficient, but makes for shorter, nicer output. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 0224283f | 2014-09-21 17:09:58 | rules: fix mlvo-not-used warning An mlvo can also be used in an expansion, but we didn't mark them in this case in commit d8a4f52cb95d989b4. This caused wrongful warnings on something like -l ch -v fr -- the `fr` is only added via expansion. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| d8a4f52c | 2014-09-20 16:13:24 | rules: warn when an RMLVO component isn't used Due to wildcard matches in the rules file, this is only really useful for misspelled or missing options, e.g. $ ./test/rmlvo-to-kccgst -o comprose:ralt > /dev/null xkbcommon: ERROR: Unrecognized RMLVO option "comprose:ralt" was ignored Although it is more of a warning, it indicates a misconfiguration which the user probably wants to see. Therefore the log level is ERROR. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| d0c6fce2 | 2014-09-20 15:06:13 | parser: use "atom" instead of "sval" in yylval "sval" is already used for "struct sval". Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 1054962d | 2014-09-11 02:55:51 | symbols: use darray_foreach_from for nicer loop Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| a931740c | 2014-09-10 13:29:52 | keycodes: fix keymap compilation with no aliases and malloc(0)==NULL If the keymap doesn't have any key-aliases (which is certainly possible), the calloc(num_key_aliases, ...) is allowed to return NULL according to the C standard, but this is not an error. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 7a87c202 | 2014-09-10 13:10:33 | ast-build: fix leak in error path Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 99184f16 | 2012-11-24 13:29:54 | Make the effective mod mask calculation available to other files We will want to use that function in state.c as well. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 40f109af | 2014-07-27 14:24:20 | ast-build: make sure InterpDef is freeable With the following two rules: InterpretDecl : INTERPRET InterpretMatch OBRACE VarDeclList CBRACE SEMI { $2->def = $4; $$ = $2; } ; InterpretMatch : KeySym PLUS Expr { $$ = InterpCreate($1, $3); } | KeySym { $$ = InterpCreate($1, NULL); } ; And the fact that InterpCreate doesn't initialize ->def, if the VarDeclList fails, the %destructor tries to recursively free the uninitialized ->def VarDef. So always initialize it. That was the only problematic code in the parser for %destructor (I'm pretty sure). Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 37cf20c9 | 2014-07-26 22:49:30 | parser: silence bison "unused value" warnings Previous commit triggered these for some reason: /home/ran/src/libxkbcommon/src/xkbcomp/parser.y:555.25-33: warning: unused value: $1 [-Wother] CoordList : CoordList COMMA Coord ^^^^^^^^^ Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 7ec00933 | 2014-07-26 22:34:05 | parser: don't leak AST nodes for discarded symbols If the parser has symbols on the stack, and then enters an error, it discards the symbols and fails. But their actions which allocate AST nodes had already ran. So we must free these to avoid leaks. We use %destructor declarations, see http://www.gnu.org/software/bison/manual/html_node/Destructor-Decl.html Note: byacc only supports %destructor when compiled with --enable-btyacc. Also, it doesn't support using the parse-param in the destructor. So we might revert this commit before the next release, or forget about byacc. https://github.com/xkbcommon/libxkbcommon/issues/8 Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 61fed8da | 2014-07-26 00:19:34 | Replace darray_mem with a new darray_steal That's a more declarative interface. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| fbd92860 | 2014-07-26 00:13:54 | ast-build: use cast instead of ->common Missed in 1b2bb204e0baa2246a6232aea762c1edb00cd44a. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 5f5b960c | 2014-07-25 23:40:40 | types: refactor CopyKeyTypesToKeymap So it's OOM-safe and doesn't clobber keymap on failure. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 320e5ffa | 2014-07-25 23:24:46 | keycodes: split CopyKeyInfoToKeymap to several functions It's a bit easier to read and self-documenting. Also handles OOM better. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| cb4bae71 | 2014-06-30 14:52:30 | parser: don't shadow "str" It's a name of a function in scanner-utils.h and also of some parameters. https://bugs.freedesktop.org/show_bug.cgi?id=79898 Reported-by: Bryce Harrington <b.harrington@samsung.com> Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 67d884ec | 2014-06-01 15:24:10 | Remove unnecessary !!(expressions) _Bool already does that. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| d6f2d8ec | 2014-05-28 20:32:16 | rules: fix leak on failure matcher_match() builds up the kccgst's, and we steal the memory on success. But on error we didn't free it. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 86cfef63 | 2014-05-11 09:47:56 | ast-build: don't leak on OOM in BoolVarCreate Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 2e561c3f | 2014-04-30 08:57:16 | parser: show the keysym in "unrecognized keysym" messages Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 67323f41 | 2014-04-25 01:14:31 | keycodes: fix uninitialized variable Happened in one of the previous commits. For some reason, gcc doesn't warn about this, but clang does... Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 07fb6a6c | 2014-04-22 18:18:13 | xkbcomp: don't align enum values Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 28a22ba2 | 2014-04-22 18:05:24 | xkbcomp: use straight assignment instead of CopyModSet Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 9014cf8c | 2014-04-22 13:15:21 | keymap, keycodes, compat: don't use darray for LEDs Use a static array of size XKB_MAX_LEDS instead, as in xkb_mod_set. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 787faf36 | 2014-04-22 12:23:36 | keymap: don't use darray in xkb_mod_set Instead just statically allocate the mods array (of size MAX_MOD_SIZE = 32). The limit is not going anywhere, and static allocations are nicer (nicer code, no OOM, etc.). It's also small and dense enough. Signed-off-by: Ran Benita <ran234@gmail.com> |