Mercurial > vim
comparison src/debugger.c @ 23788:d12ef361d9de v8.2.2435
patch 8.2.2435: setline() gives an error for some types
Commit: https://github.com/vim/vim/commit/3445320839a38b3b0c253513b125da8298ec27d6
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jan 31 13:08:38 2021 +0100
patch 8.2.2435: setline() gives an error for some types
Problem: setline() gives an error for some types.
Solution: Allow any type, convert each item to a string.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 31 Jan 2021 13:15:04 +0100 |
parents | e3720756acdc |
children | fdc6a7769045 |
comparison
equal
deleted
inserted
replaced
23787:7b30bc27e54b | 23788:d12ef361d9de |
---|---|
938 tv = eval_expr(bp->dbg_name, NULL); | 938 tv = eval_expr(bp->dbg_name, NULL); |
939 if (tv != NULL) | 939 if (tv != NULL) |
940 { | 940 { |
941 if (bp->dbg_val == NULL) | 941 if (bp->dbg_val == NULL) |
942 { | 942 { |
943 debug_oldval = typval_tostring(NULL); | 943 debug_oldval = typval_tostring(NULL, TRUE); |
944 bp->dbg_val = tv; | 944 bp->dbg_val = tv; |
945 debug_newval = typval_tostring(bp->dbg_val); | 945 debug_newval = typval_tostring(bp->dbg_val, TRUE); |
946 line = TRUE; | 946 line = TRUE; |
947 } | 947 } |
948 else | 948 else |
949 { | 949 { |
950 if (typval_compare(tv, bp->dbg_val, EXPR_IS, FALSE) == OK | 950 if (typval_compare(tv, bp->dbg_val, EXPR_IS, FALSE) == OK |
951 && tv->vval.v_number == FALSE) | 951 && tv->vval.v_number == FALSE) |
952 { | 952 { |
953 typval_T *v; | 953 typval_T *v; |
954 | 954 |
955 line = TRUE; | 955 line = TRUE; |
956 debug_oldval = typval_tostring(bp->dbg_val); | 956 debug_oldval = typval_tostring(bp->dbg_val, TRUE); |
957 // Need to evaluate again, typval_compare() overwrites | 957 // Need to evaluate again, typval_compare() overwrites |
958 // "tv". | 958 // "tv". |
959 v = eval_expr(bp->dbg_name, NULL); | 959 v = eval_expr(bp->dbg_name, NULL); |
960 debug_newval = typval_tostring(v); | 960 debug_newval = typval_tostring(v, TRUE); |
961 free_tv(bp->dbg_val); | 961 free_tv(bp->dbg_val); |
962 bp->dbg_val = v; | 962 bp->dbg_val = v; |
963 } | 963 } |
964 free_tv(tv); | 964 free_tv(tv); |
965 } | 965 } |
966 } | 966 } |
967 else if (bp->dbg_val != NULL) | 967 else if (bp->dbg_val != NULL) |
968 { | 968 { |
969 debug_oldval = typval_tostring(bp->dbg_val); | 969 debug_oldval = typval_tostring(bp->dbg_val, TRUE); |
970 debug_newval = typval_tostring(NULL); | 970 debug_newval = typval_tostring(NULL, TRUE); |
971 free_tv(bp->dbg_val); | 971 free_tv(bp->dbg_val); |
972 bp->dbg_val = NULL; | 972 bp->dbg_val = NULL; |
973 line = TRUE; | 973 line = TRUE; |
974 } | 974 } |
975 | 975 |