mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge #3135 'Use proper refcount of msgpack type lists'.
This commit is contained in:
commit
029b58e417
@ -4654,7 +4654,8 @@ msgpackparse({list}) {Nvim} *msgpackparse()*
|
||||
let fname = expand('~/.nvim/shada/main.shada')
|
||||
let mpack = readfile(fname, 'b')
|
||||
let shada_objects = msgpackparse(mpack)
|
||||
< This will read |shada-file| to `shada_objects` list.
|
||||
< This will read ~/.nvim/shada/main.shada file to
|
||||
`shada_objects` list.
|
||||
|
||||
Limitations:
|
||||
1. Mapping ordering is not preserved unless messagepack
|
||||
@ -4668,10 +4669,10 @@ msgpackparse({list}) {Nvim} *msgpackparse()*
|
||||
Some messagepack strings may be parsed to special
|
||||
dictionaries. Special dictionaries are dictionaries which
|
||||
|
||||
1. Contain exactly two keys: `_TYPE` and `_VALUE`.
|
||||
1. Contain exactly two keys: `_TYPE` and `_VAL`.
|
||||
2. `_TYPE` key is one of the types found in |v:msgpack_types|
|
||||
variable.
|
||||
3. Value for `_VALUE` has the following format (Key column
|
||||
3. Value for `_VAL` has the following format (Key column
|
||||
contains name of the key from |v:msgpack_types|):
|
||||
|
||||
Key Value ~
|
||||
@ -4682,9 +4683,9 @@ msgpackparse({list}) {Nvim} *msgpackparse()*
|
||||
bits, number with bits from 62nd to 31st, lowest 31
|
||||
bits. I.e. to get actual number one will need to use
|
||||
code like >
|
||||
_VALUE[0] * ((_VALUE[1] << 62)
|
||||
& (_VALUE[2] << 31)
|
||||
& _VALUE[3])
|
||||
_VAL[0] * ((_VAL[1] << 62)
|
||||
& (_VAL[2] << 31)
|
||||
& _VAL[3])
|
||||
< Special dictionary with this type will appear in
|
||||
|msgpackparse()| output under one of the following
|
||||
circumstances:
|
||||
|
@ -584,6 +584,7 @@ void eval_init(void)
|
||||
for (size_t i = 0; i < ARRAY_SIZE(msgpack_type_names); i++) {
|
||||
list_T *const type_list = list_alloc();
|
||||
type_list->lv_lock = VAR_FIXED;
|
||||
type_list->lv_refcount = 1;
|
||||
dictitem_T *const di = dictitem_alloc((char_u *) msgpack_type_names[i]);
|
||||
di->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
|
||||
di->di_tv = (typval_T) {
|
||||
|
Loading…
Reference in New Issue
Block a user