summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvimboss <devnull@localhost>2008-08-08 10:36:31 +0000
committervimboss <devnull@localhost>2008-08-08 10:36:31 +0000
commit3d2a8ea9aedd94323d1264b2317822dc2fbf3feb (patch)
treebc7ca5b53d6f86d9281ebf8f415e7d8148d5f223
parentfaa890d5fcb170172b0438d0f9bf3b2f12eff01d (diff)
downloadvim-3d2a8ea9aedd94323d1264b2317822dc2fbf3feb.tar.gz
updated for version 7.2c-001v7.2c.001v7-2c-001
-rw-r--r--runtime/doc/eval.txt6
-rw-r--r--src/eval.c5
-rw-r--r--src/version.c2
3 files changed, 11 insertions, 2 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index ffe5ea9e..8bb990a0 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -2681,7 +2681,11 @@ extend({expr1}, {expr2} [, {expr3}]) *extend()*
Examples: >
:echo sort(extend(mylist, [7, 5]))
:call extend(mylist, [2, 3], 1)
-< Use |add()| to concatenate one item to a list. To concatenate
+< When {expr1} is the same List as {expr2} then the number of
+ items copied is equal to the original length of the List.
+ E.g., when {expr3} is 1 you get N new copies of the first item
+ (where N is the original length of the List).
+ Use |add()| to concatenate one item to a list. To concatenate
two lists into a new list use the + operator: >
:let newlist = [1, 2, 3] + [4, 5]
<
diff --git a/src/eval.c b/src/eval.c
index cb548d30..5802a089 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -6231,8 +6231,11 @@ list_extend(l1, l2, bef)
listitem_T *bef;
{
listitem_T *item;
+ int todo = l2->lv_len;
- for (item = l2->lv_first; item != NULL; item = item->li_next)
+ /* We also quit the loop when we have inserted the original item count of
+ * the list, avoid a hang when we extend a list with itself. */
+ for (item = l2->lv_first; item != NULL && --todo >= 0; item = item->li_next)
if (list_insert_tv(l1, &item->li_tv, bef) == FAIL)
return FAIL;
return OK;
diff --git a/src/version.c b/src/version.c
index 21d7b143..c8565c44 100644
--- a/src/version.c
+++ b/src/version.c
@@ -677,6 +677,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1,
+/**/
0
};