aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/decode.c
Commit message (Collapse)AuthorAge
* refactor: format #15702dundargoc2021-09-18
|
* feat(decode_string): decode binary string with NULs to BlobSean Dewar2021-09-15
| | | | | | | | Strings that previously decoded into a msgpack special for representing BINs with NULs now convert to Blobs. It shouldn't be possible to decode into this special anymore after this change? Notably, Lua strings with NULs now convert to Blobs when passed to VimL.
* vim-patch:8.1.1355: obvious mistakes are accepted as valid expressionsSean Dewar2021-09-11
| | | | | | | | | Problem: Obvious mistakes are accepted as valid expressions. Solution: Be more strict about parsing numbers. (Yasuhiro Matsumoto, closes vim/vim#3981) https://github.com/vim/vim/commit/16e9b85113e0b354ece1cb4f5fcc7866850f3685 Update vim_str2nr_spec.lua to add more tests that use strict = true.
* Use abort() instead of assert(false) for things that should never happenJames McCoy2021-01-31
| | | | | | | | 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.
* robustness: avoid adding offset to NULL pointerBjörn Linse2020-09-04
| | | | | | | | | | | 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.
* vim-patch:8.2.0111: VAR_SPECIAL is also used for booleansBilly Su2020-06-06
| | | | | | Problem: VAR_SPECIAL is also used for booleans. Solution: Add VAR_BOOL for better type checking. https://github.com/vim/vim/commit/9b4a15d5dba354d2e1e02871470bad103f34769a
* build: -Wmissing-prototypesJustin M. Keyes2019-02-04
| | | | | | | 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.
* eval/decode: Silence PVS/V547: code written for 32-bit integersZyX2018-04-09
|
* Merge #7806 from ZyX-I/list-statJustin M. Keyes2018-01-15
|\ | | | | Add a way to collect list usage statistics
| * *: Provide list length when allocating listsZyX2018-01-14
| |
* | coverity/169163: decode_string: Null pointer derefJustin M. Keyes2018-01-11
|/ | | | | | | | | | | | | | | | | | | *** 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 };
* *: Remove most calls to tv_list_item_allocZyX2017-12-24
| | | | 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.
* *: Fix linter errorsZyX2017-12-11
|
* *: Hide list implementation in other files as wellZyX2017-12-10
|
* *: Start hiding list implementationZyX2017-12-10
| | | | Most of files, except for eval.c and eval/* were only processed by perl.
* eval/decode.c: Avoid NULL arg to memchr() #7332Adrian Neumann2017-11-06
| | | | | | | 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>
* lintJames McCoy2017-06-04
|
* vim-patch:7.4.1976James McCoy2017-06-04
| | | | | | | Problem: Number variables are not 64 bits while they could be. Solution: Add the num64 feature. (Ken Takata) https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
* Merge branch 'master' into luaviml'/luaZyX2017-05-08
|\
| * *: Add comment to all C filesZyX2017-04-19
| |
* | Merge branch 'master' into luaviml'/luaZyX2017-04-10
|\|
| * *: Remove useless assertsZyX2017-04-08
| |
| * *: Fix linter errorsZyX2017-04-08
| | | | | | | | | | | | Drops comments `// for …` that do not pass linter for them being unmaintainable and fast to becoming incomplete or even incorrect. Mention @dedmass
| * eval/*code,shada: Drop support for converting UTF-8 from/to p_encZyX2017-04-08
| | | | | | | | Not needed any longer since p_enc is always utf-8.
| * eval/decode: Omit calling convert_setup for each stringZyX2017-04-08
| | | | | | Uses the same trick eval/encode does.
| * eval/decode,shada: Do not forget to clean up convertersZyX2017-04-08
| |
* | Merge branch 'master' into luaviml'/luaZyX2017-04-08
|\|
| * Add handling for MSGPACK_OBJECT_FLOAT{32,64}James McCoy2017-03-30
| | | | | | | | | | | | 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.
| * *: Move some dictionary functions to typval.h and use char*ZyX2017-03-29
| | | | | | | | Also fixes buffer reusage in setmatches() and complete().
| * eval: Split eval.c into smaller filesZyX2017-03-29
| |
* | eval/decode: Fix memory leak in JSON functionsZyX2017-03-27
| |
* | viml/executor: Directly generate typval_T valuesZyX2017-03-27
|/ | | | | 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.
* lib/kvec: Do not use kv_init unless neededZyX2016-05-30
|
* lib/kvec: Remove useless type argument from kv_push macrosZyX2016-05-30
|
* *: Make set_vim_var_\* functions have proper argument typesZyX2016-04-18
|
* eval/decode: Accept `\r` as space characterZyX2016-04-18
|
* eval/decode: Do not overflow when parsing `-`ZyX2016-04-18
| | | Also makes if’s less nested.
* eval/decode: Clarify meaning of some pointer argumentsZyX2016-04-18
|
* eval/decode: Fix typo in internal error messageZyX2016-04-18
|
* eval/decode: Reject even more numbersZyX2016-04-18
| | | | Rejects leading zeroes and numbers like 1.e+5 (decimal dot with missing number with signed exponent).
* *: Fix linter errorsZyX2016-04-18
|
* eval/decode: Rewrite json_decode_string end as suggested by oni-linkZyX2016-04-18
|
* eval/decode: Reject more numbers, accept 1e5ZyX2016-04-18
|
* eval/decode: Do not loose high surrogates followed by high surrogatesZyX2016-04-18
|
* eval/decode: Make sure that error messages do not cause overflowZyX2016-04-18
|
* eval/decode: Make sure that parsing strings does not overflowZyX2016-04-18
|
* eval/decode: Make sure that blank input does not crash NeovimZyX2016-04-18
|
* eval/decode: Make sure that U+00C3 is parsed correctlyZyX2016-04-18
|
* eval/decode: Avoid overflow when parsing incomplete null/true/falseZyX2016-04-18
| | | | Note: second test does not crash or produce asan errors, even though it should.
* eval/decode: Rename brackets in error messagesZyX2016-04-18
| | | | | U+007D is officially RIGHT CURLY BRACKET. U+005D is officially RIGHT SQUARE BRACKET.