summaryrefslogtreecommitdiffstats
path: root/src/dict.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-07-08 16:50:37 +0200
committerBram Moolenaar <Bram@vim.org>2018-07-08 16:50:37 +0200
commite0be167a805fd547c25ec1ec97fd4c7f13046236 (patch)
tree423fb96f7b30329ef0b7ccf3d4b2a02620e7929c /src/dict.c
parent4cde86c2ef885e82fff3d925dee9fb5671c025cf (diff)
patch 8.1.0166: using dict_add_nr_str() is clumsyv8.1.0166
Problem: Using dict_add_nr_str() is clumsy. Solution: Split into two functions. (Ozaki Kiichi, closes #3154)
Diffstat (limited to 'src/dict.c')
-rw-r--r--src/dict.c40
1 files changed, 25 insertions, 15 deletions
diff --git a/src/dict.c b/src/dict.c
index 55069783f2..e1f7fa23e8 100644
--- a/src/dict.c
+++ b/src/dict.c
@@ -327,16 +327,11 @@ dict_add(dict_T *d, dictitem_T *item)
}
/*
- * Add a number or string entry to dictionary "d".
- * When "str" is NULL use number "nr", otherwise use "str".
+ * Add a number entry to dictionary "d".
* Returns FAIL when out of memory and when key already exists.
*/
int
-dict_add_nr_str(
- dict_T *d,
- char *key,
- varnumber_T nr,
- char_u *str)
+dict_add_number(dict_T *d, char *key, varnumber_T nr)
{
dictitem_T *item;
@@ -344,16 +339,31 @@ dict_add_nr_str(
if (item == NULL)
return FAIL;
item->di_tv.v_lock = 0;
- if (str == NULL)
- {
- item->di_tv.v_type = VAR_NUMBER;
- item->di_tv.vval.v_number = nr;
- }
- else
+ item->di_tv.v_type = VAR_NUMBER;
+ item->di_tv.vval.v_number = nr;
+ if (dict_add(d, item) == FAIL)
{
- item->di_tv.v_type = VAR_STRING;
- item->di_tv.vval.v_string = vim_strsave(str);
+ dictitem_free(item);
+ return FAIL;
}
+ return OK;
+}
+
+/*
+ * Add a string entry to dictionary "d".
+ * Returns FAIL when out of memory and when key already exists.
+ */
+ int
+dict_add_string(dict_T *d, char *key, char_u *str)
+{
+ dictitem_T *item;
+
+ item = dictitem_alloc((char_u *)key);
+ if (item == NULL)
+ return FAIL;
+ item->di_tv.v_lock = 0;
+ item->di_tv.v_type = VAR_STRING;
+ item->di_tv.vval.v_string = str != NULL ? vim_strsave(str) : NULL;
if (dict_add(d, item) == FAIL)
{
dictitem_free(item);