Mercurial > vim
comparison src/if_mzsch.c @ 19102:ba9f50bfda83 v8.2.0111
patch 8.2.0111: VAR_SPECIAL is also used for booleans
Commit: https://github.com/vim/vim/commit/9b4a15d5dba354d2e1e02871470bad103f34769a
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jan 11 16:05:23 2020 +0100
patch 8.2.0111: VAR_SPECIAL is also used for booleans
Problem: VAR_SPECIAL is also used for booleans.
Solution: Add VAR_BOOL for better type checking.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 11 Jan 2020 16:15:04 +0100 |
parents | f0f9692d4487 |
children | d776967d0f0d |
comparison
equal
deleted
inserted
replaced
19101:7c682fab000b | 19102:ba9f50bfda83 |
---|---|
3134 MZ_GC_CHECK(); | 3134 MZ_GC_CHECK(); |
3135 | 3135 |
3136 MZ_GC_UNREG(); | 3136 MZ_GC_UNREG(); |
3137 } | 3137 } |
3138 } | 3138 } |
3139 else if (vim_value->v_type == VAR_SPECIAL) | 3139 else if (vim_value->v_type == VAR_BOOL || vim_value->v_type == VAR_SPECIAL) |
3140 { | 3140 { |
3141 if (vim_value->vval.v_number <= VVAL_TRUE) | 3141 if (vim_value->vval.v_number <= VVAL_TRUE) |
3142 result = scheme_make_integer((long)vim_value->vval.v_number); | 3142 result = scheme_make_integer((long)vim_value->vval.v_number); |
3143 else | 3143 else |
3144 result = scheme_null; | 3144 result = scheme_null; |
3216 tv->v_type = VAR_NUMBER; | 3216 tv->v_type = VAR_NUMBER; |
3217 tv->vval.v_number = SCHEME_INT_VAL(obj); | 3217 tv->vval.v_number = SCHEME_INT_VAL(obj); |
3218 } | 3218 } |
3219 else if (SCHEME_BOOLP(obj)) | 3219 else if (SCHEME_BOOLP(obj)) |
3220 { | 3220 { |
3221 tv->v_type = VAR_SPECIAL; | 3221 tv->v_type = VAR_BOOL; |
3222 tv->vval.v_number = SCHEME_TRUEP(obj); | 3222 tv->vval.v_number = SCHEME_TRUEP(obj); |
3223 } | 3223 } |
3224 # ifdef FEAT_FLOAT | 3224 # ifdef FEAT_FLOAT |
3225 else if (SCHEME_DBLP(obj)) | 3225 else if (SCHEME_DBLP(obj)) |
3226 { | 3226 { |