Mercurial > vim
comparison src/if_py_both.h @ 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 | 75562beba71c |
children | 94eda51ba9ba |
comparison
equal
deleted
inserted
replaced
19101:7c682fab000b | 19102:ba9f50bfda83 |
---|---|
842 return NULL; | 842 return NULL; |
843 } | 843 } |
844 } | 844 } |
845 } | 845 } |
846 } | 846 } |
847 else if (our_tv->v_type == VAR_SPECIAL) | 847 else if (our_tv->v_type == VAR_BOOL) |
848 { | 848 { |
849 if (our_tv->vval.v_number == VVAL_FALSE) | 849 if (our_tv->vval.v_number == VVAL_FALSE) |
850 { | 850 { |
851 ret = Py_False; | 851 ret = Py_False; |
852 Py_INCREF(ret); | 852 Py_INCREF(ret); |
853 } | 853 } |
854 else if (our_tv->vval.v_number == VVAL_TRUE) | 854 else |
855 { | 855 { |
856 ret = Py_True; | 856 ret = Py_True; |
857 Py_INCREF(ret); | 857 Py_INCREF(ret); |
858 } | 858 } |
859 else | 859 return ret; |
860 { | 860 } |
861 Py_INCREF(Py_None); | 861 else if (our_tv->v_type == VAR_SPECIAL) |
862 ret = Py_None; | 862 { |
863 } | 863 Py_INCREF(Py_None); |
864 ret = Py_None; | |
864 return ret; | 865 return ret; |
865 } | 866 } |
866 else if (our_tv->v_type == VAR_BLOB) | 867 else if (our_tv->v_type == VAR_BLOB) |
867 ret = PyBytes_FromStringAndSize( | 868 ret = PyBytes_FromStringAndSize( |
868 (char*) our_tv->vval.v_blob->bv_ga.ga_data, | 869 (char*) our_tv->vval.v_blob->bv_ga.ga_data, |
6387 case VAR_UNKNOWN: | 6388 case VAR_UNKNOWN: |
6388 case VAR_CHANNEL: | 6389 case VAR_CHANNEL: |
6389 case VAR_JOB: | 6390 case VAR_JOB: |
6390 Py_INCREF(Py_None); | 6391 Py_INCREF(Py_None); |
6391 return Py_None; | 6392 return Py_None; |
6393 case VAR_BOOL: | |
6392 case VAR_SPECIAL: | 6394 case VAR_SPECIAL: |
6393 switch (tv->vval.v_number) | 6395 switch (tv->vval.v_number) |
6394 { | 6396 { |
6395 case VVAL_FALSE: return AlwaysFalse(NULL); | 6397 case VVAL_FALSE: return AlwaysFalse(NULL); |
6396 case VVAL_TRUE: return AlwaysTrue(NULL); | 6398 case VVAL_TRUE: return AlwaysTrue(NULL); |