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);