aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/decode.c
Commit message (Collapse)AuthorAge
* 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.
* eval/decode: Record that `obj` may be freedZyX2016-04-18
|
* eval/decode: Also use VAR_UNLOCKED in old codeZyX2016-04-18
|
* encode: Handle incomplete surrogates like `\uSURR\uOTHR` properlyZyX2016-04-18
|