mirror of
https://github.com/neovim/neovim.git
synced 2025-09-10 21:38:19 +00:00
object_to_vim: Fix buffer/window/tabpage conversion on BE systems
Since data.integer is a different (larger) integer type than data.{buffer,window,tabpage}, we cannot abuse the union by using data.integer to access the value for all 4 types. Instead, remove the {buffer,window,tabpage} members and always use the integer member. In order to accomodate this, perform distinct validation and coercion between the Integer type and Buffer/Window/Tabpage types in object_to_vim, msgpack_rpc helpers, and gendispatch.lua.
This commit is contained in:
@@ -616,13 +616,13 @@ bool object_to_vim(Object obj, typval_T *tv, Error *err)
|
||||
case kObjectTypeWindow:
|
||||
case kObjectTypeTabpage:
|
||||
case kObjectTypeInteger:
|
||||
if (obj.data.integer > INT_MAX || obj.data.integer < INT_MIN) {
|
||||
if (obj.data.integer > VARNUMBER_MAX || obj.data.integer < VARNUMBER_MIN) {
|
||||
api_set_error(err, Validation, _("Integer value outside range"));
|
||||
return false;
|
||||
}
|
||||
|
||||
tv->v_type = VAR_NUMBER;
|
||||
tv->vval.v_number = (int)obj.data.integer;
|
||||
tv->vval.v_number = (varnumber_T)obj.data.integer;
|
||||
break;
|
||||
|
||||
case kObjectTypeFloat:
|
||||
|
Reference in New Issue
Block a user