Sean Dewar
34cb087955
vim-patch:8.1.1355: obvious mistakes are accepted as valid expressions
...
Problem: Obvious mistakes are accepted as valid expressions.
Solution: Be more strict about parsing numbers. (Yasuhiro Matsumoto,
closes vim/vim#3981 )
16e9b85113
Update vim_str2nr_spec.lua to add more tests that use strict = true.
2021-09-11 15:33:19 +01:00
James McCoy
27a7a4d384
Use abort() instead of assert(false) for things that should never happen
...
assert() is compiled out for release builds, but we don't want to
continue running in these impossible situations.
This also resolves the "implicit fallthrough" warnings for the asserts
in switch cases.
2021-01-31 11:28:52 -05:00
Björn Linse
b33e375b2b
robustness: avoid adding offset to NULL pointer
...
UBSAN with clang 10.0 is checking for adding offsets to a `NULL` pointer
which is not allowed. This is not yet checked in the version of clang
used in CI (7.0.0). I will work on cases of this so that tests passes
locally for me.
This could be tested in CI by either upgrading the clang of the
ASAN/UBSAN to 10.0, or add yet another CI target which builds with
clang 10.0.
2020-09-04 23:29:51 +02:00
Billy Su
1805fb469a
vim-patch:8.2.0111: VAR_SPECIAL is also used for booleans
...
Problem: VAR_SPECIAL is also used for booleans.
Solution: Add VAR_BOOL for better type checking.
9b4a15d5db
2020-06-06 23:24:58 +08:00
Justin M. Keyes
f2c6164b04
build: -Wmissing-prototypes
...
ref #343
Though I don't see a strong benefit, it isn't too much of a burden, and
maybe avoids confusion in some cases.
2019-02-04 04:00:20 +01:00
ZyX
5acda03576
eval/decode: Silence PVS/V547: code written for 32-bit integers
2018-04-09 10:29:34 +03:00
Justin M. Keyes
de0a9548f7
Merge #7806 from ZyX-I/list-stat
...
Add a way to collect list usage statistics
2018-01-15 23:35:20 +01:00
ZyX
9ea1752d60
*: Provide list length when allocating lists
2018-01-14 01:33:16 +03:00
Justin M. Keyes
18d244eded
coverity/169163: decode_string: Null pointer deref
...
*** CID 169163: Null pointer dereferences (FORWARD_NULL)
/src/nvim/eval/decode.c: 290 in decode_string()
284 if (elw_ret == -1) {
285 tv_clear(&tv);
286 return (typval_T) { .v_type = VAR_UNKNOWN, .v_lock = VAR_UNLOCKED };
287 }
288 return tv;
289 } else {
>>> CID 169163: Null pointer dereferences (FORWARD_NULL)
>>> Passing null pointer "s" to "xmemdupz", which dereferences it. (The dereference is assumed on the basis of the 'nonnull' parameter attribute.)
290 return (typval_T) {
291 .v_type = VAR_STRING,
292 .v_lock = VAR_UNLOCKED,
293 .vval = { .v_string = (char_u *)(
294 s_allocated ? (char *)s : xmemdupz(s, len)) },
295 };
2018-01-11 10:45:16 +01:00
ZyX
0c533a488f
*: Remove most calls to tv_list_item_alloc
...
Still left calls in eval/typval.c and test/unit/eval/helpers.lua. Latter is the
only reason why function did not receive `static` modifier.
2017-12-24 14:09:35 +03:00
ZyX
f4132fb38b
*: Fix linter errors
2017-12-11 10:19:20 +03:00
ZyX
ac4bbf55f6
*: Hide list implementation in other files as well
2017-12-10 22:04:43 +03:00
ZyX
274f32d42e
*: Start hiding list implementation
...
Most of files, except for eval.c and eval/* were only processed by perl.
2017-12-10 04:00:52 +03:00
Adrian Neumann
8f03014e88
eval/decode.c: Avoid NULL arg to memchr() #7332
...
Clang complains because memchr has undefined behavior if the ptr is
NULL, even if len==0.
Helped-by: Nikolai Aleksandrovich Pavlov <kp-pav@yandex.ru >
2017-11-06 05:00:58 +01:00
James McCoy
43534cab02
lint
2017-06-04 22:12:14 -04:00
James McCoy
81be7358be
vim-patch:7.4.1976
...
Problem: Number variables are not 64 bits while they could be.
Solution: Add the num64 feature. (Ken Takata)
22fcfad292
2017-06-04 22:12:13 -04:00
ZyX
09f849b600
Merge branch 'master' into luaviml'/lua
2017-05-08 15:43:45 +03:00
ZyX
c2f3e361c5
*: Add comment to all C files
2017-04-19 19:11:50 +03:00
ZyX
ab4d13e2fa
Merge branch 'master' into luaviml'/lua
2017-04-10 22:21:06 +03:00
ZyX
7701014b65
*: Remove useless asserts
2017-04-08 20:22:46 +03:00
ZyX
ab19fa1552
*: Fix linter errors
...
Drops comments `// for …` that do not pass linter for them being unmaintainable
and fast to becoming incomplete or even incorrect.
Mention @dedmass
2017-04-08 19:20:42 +03:00
ZyX
e814695223
eval/*code,shada: Drop support for converting UTF-8 from/to p_enc
...
Not needed any longer since p_enc is always utf-8.
2017-04-08 19:20:41 +03:00
ZyX
6006cb74ef
eval/decode: Omit calling convert_setup for each string
...
Uses the same trick eval/encode does.
2017-04-08 19:00:05 +03:00
ZyX
e586047a53
eval/decode,shada: Do not forget to clean up converters
2017-04-08 19:00:04 +03:00
ZyX
043d8ff9f2
Merge branch 'master' into luaviml'/lua
2017-04-08 01:54:58 +03:00
James McCoy
f4a3a96b68
Add handling for MSGPACK_OBJECT_FLOAT{32,64}
...
msgpack-c previously only had MSGPACK_OBJECT_FLOAT, which was a 64-bit
value. Now, 32-bit and 64-bit floats are supported as distinct types,
but we'll simply continue to treat everything as 64-bit types.
2017-03-30 21:35:36 -04:00
ZyX
e18a578308
*: Move some dictionary functions to typval.h and use char*
...
Also fixes buffer reusage in setmatches() and complete().
2017-03-29 10:07:42 +03:00
ZyX
fb146e80aa
eval: Split eval.c into smaller files
2017-03-29 10:05:06 +03:00
ZyX
45feaa73d0
eval/decode: Fix memory leak in JSON functions
2017-03-27 00:12:22 +03:00
ZyX
f551df17f3
viml/executor: Directly generate typval_T values
...
Note: this will *still* crash when using API in cases similar to the one
described in first commit. Just it needs different code to reproduce.
2017-03-27 00:11:24 +03:00
ZyX
d007c2977b
lib/kvec: Do not use kv_init unless needed
2016-05-30 21:19:52 +03:00
ZyX
8cfb272c74
lib/kvec: Remove useless type argument from kv_push macros
2016-05-30 21:14:39 +03:00
ZyX
494b1c9bee
*: Make set_vim_var_\* functions have proper argument types
2016-04-18 02:48:20 +03:00
ZyX
c129f6cfaf
eval/decode: Accept \r
as space character
2016-04-18 02:48:20 +03:00
ZyX
d06c2a1b18
eval/decode: Do not overflow when parsing -
...
Also makes if’s less nested.
2016-04-18 02:48:20 +03:00
ZyX
2b0d46195b
eval/decode: Clarify meaning of some pointer arguments
2016-04-18 02:48:20 +03:00
ZyX
0c598774d8
eval/decode: Fix typo in internal error message
2016-04-18 02:48:20 +03:00
ZyX
515fea1ef0
eval/decode: Reject even more numbers
...
Rejects leading zeroes and numbers like 1.e+5 (decimal dot with missing number
with signed exponent).
2016-04-18 02:48:20 +03:00
ZyX
69ce17878e
*: Fix linter errors
2016-04-18 02:48:20 +03:00
ZyX
9a56fcb2e8
eval/decode: Rewrite json_decode_string end as suggested by oni-link
2016-04-18 02:48:20 +03:00
ZyX
9c543f2e24
eval/decode: Reject more numbers, accept 1e5
2016-04-18 02:48:20 +03:00
ZyX
032ac502ff
eval/decode: Do not loose high surrogates followed by high surrogates
2016-04-18 02:48:20 +03:00
ZyX
eb806c9620
eval/decode: Make sure that error messages do not cause overflow
2016-04-18 02:48:20 +03:00
ZyX
52c6cc2189
eval/decode: Make sure that parsing strings does not overflow
2016-04-18 02:48:20 +03:00
ZyX
224d7df630
eval/decode: Make sure that blank input does not crash Neovim
2016-04-18 02:48:20 +03:00
ZyX
394830631f
eval/decode: Make sure that U+00C3 is parsed correctly
2016-04-18 02:48:20 +03:00
ZyX
4eb5d05f01
eval/decode: Avoid overflow when parsing incomplete null/true/false
...
Note: second test does not crash or produce asan errors, even though it should.
2016-04-18 02:48:20 +03:00
ZyX
4a29995fe7
eval/decode: Rename brackets in error messages
...
U+007D is officially RIGHT CURLY BRACKET.
U+005D is officially RIGHT SQUARE BRACKET.
2016-04-18 02:48:20 +03:00
ZyX
1fc84ae2cd
eval/decode: Record that obj
may be freed
2016-04-18 02:48:20 +03:00
ZyX
4ff5d6e41c
eval/decode: Also use VAR_UNLOCKED in old code
2016-04-18 02:48:20 +03:00