forked from aniani/vim
patch 8.2.2389: test failure on a few systems
Problem: Test failure on a few systems. Solution: Avoid that "char" value is negative.
This commit is contained in:
parent
57d5a01cb4
commit
9b6344613e
@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2389,
|
||||
/**/
|
||||
2388,
|
||||
/**/
|
||||
|
@ -224,7 +224,7 @@ typedef struct {
|
||||
// arguments to ISN_CHECKTYPE
|
||||
typedef struct {
|
||||
type_T *ct_type;
|
||||
char ct_off; // offset in stack, -1 is bottom
|
||||
char ct_off; // offset in stack (positive), 1 is bottom
|
||||
char ct_arg_idx; // argument index or zero
|
||||
} checktype_T;
|
||||
|
||||
|
@ -826,7 +826,9 @@ generate_TYPECHECK(
|
||||
if ((isn = generate_instr(cctx, ISN_CHECKTYPE)) == NULL)
|
||||
return FAIL;
|
||||
isn->isn_arg.type.ct_type = alloc_type(expected);
|
||||
isn->isn_arg.type.ct_off = offset;
|
||||
// Use the negated offset so that it's always positive. Some systems don't
|
||||
// support negative numbers for "char".
|
||||
isn->isn_arg.type.ct_off = (char)-offset;
|
||||
isn->isn_arg.type.ct_arg_idx = argidx;
|
||||
|
||||
// type becomes expected
|
||||
|
@ -3240,7 +3240,7 @@ call_def_function(
|
||||
{
|
||||
checktype_T *ct = &iptr->isn_arg.type;
|
||||
|
||||
tv = STACK_TV_BOT(ct->ct_off);
|
||||
tv = STACK_TV_BOT(-(int)ct->ct_off);
|
||||
SOURCING_LNUM = iptr->isn_lnum;
|
||||
if (check_typval_type(ct->ct_type, tv, ct->ct_arg_idx)
|
||||
== FAIL)
|
||||
@ -4242,11 +4242,11 @@ ex_disassemble(exarg_T *eap)
|
||||
if (ct->ct_arg_idx == 0)
|
||||
smsg("%4d CHECKTYPE %s stack[%d]", current,
|
||||
type_name(ct->ct_type, &tofree),
|
||||
(int)ct->ct_off);
|
||||
-(int)ct->ct_off);
|
||||
else
|
||||
smsg("%4d CHECKTYPE %s stack[%d] arg %d", current,
|
||||
type_name(ct->ct_type, &tofree),
|
||||
(int)ct->ct_off,
|
||||
-(int)ct->ct_off,
|
||||
(int)ct->ct_arg_idx);
|
||||
vim_free(tofree);
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user