]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.2183: Maximum callback depth is not configurable v9.0.2183
authorzeertzjq <zeertzjq@outlook.com>
Thu, 21 Dec 2023 15:59:26 +0000 (16:59 +0100)
committerChristian Brabandt <cb@256bit.org>
Thu, 21 Dec 2023 16:03:31 +0000 (17:03 +0100)
Problem:  Maximum callback depth is not configurable.
Solution: Revert patch 9.0.2103.  Set 'maxfuncdepth' in test.
          (zeertzjq)

fixes: #13732
closes: #13736

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/doc/message.txt
runtime/doc/options.txt
src/testdir/test_popupwin.vim
src/userfunc.c
src/version.c

index f8a9fdfa604b40b7f4a2dbd2eeeff17e9c435da9..92a8e3cda4ab281ddecfc30beb592bfb040b9560 100644 (file)
@@ -1,4 +1,4 @@
-*message.txt*   For Vim version 9.0.  Last change: 2023 Nov 08
+*message.txt*   For Vim version 9.0.  Last change: 2023 Dec 20
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -135,8 +135,6 @@ This happens when an Ex command executes an Ex command that executes an Ex
 command, etc.  The limit is 200 or the value of 'maxfuncdepth', whatever is
 larger.  When it's more there probably is an endless loop.  Probably a
 |:execute| or |:source| command is involved.
-Can also happen with a recursive callback function (|job-callback|).
-A limit of 20 is used here.
 
                                                        *E254*
   Cannot allocate color {name} ~
index 54ee56f0b5f8a1428fec382509a0bcb32f72cab0..34059e0ea655d09700233a5438877f877033383d 100644 (file)
@@ -1,4 +1,4 @@
-*options.txt*  For Vim version 9.0.  Last change: 2023 Dec 16
+*options.txt*  For Vim version 9.0.  Last change: 2023 Dec 20
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -5477,6 +5477,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        Increasing this limit above 200 also changes the maximum for Ex
        command recursion, see |E169|.
        See also |:function|.
+       Also used for maximum depth of callback functions.
 
                                                *'maxmapdepth'* *'mmd'* *E223*
 'maxmapdepth' 'mmd'    number  (default 1000)
index d01eccc412e9ddbe3446cbde6877a7370241bb0b..c20ff48c6272b71c5fab406560104d0c881e31ad 100644 (file)
@@ -4206,10 +4206,13 @@ func Test_popupwin_with_error()
 endfunc
 
 func Test_popup_close_callback_recursive()
+  set maxfuncdepth=20
   " this invokes the callback recursively
   let winid = popup_create('something', #{callback: 'popup_close'})
   redraw
-  call assert_fails('call popup_close(winid)', 'E169')
+  call assert_fails('call popup_close(winid)', 'E169:')
+
+  set maxfuncdepth&
 endfunc
 
 " vim: shiftwidth=2 sts=2
index ea03e786950eac2614ed96eb25d40c454d52d1eb..c0a2487b46611763cd63daab9346589315dec5d6 100644 (file)
@@ -14,9 +14,6 @@
 #include "vim.h"
 
 #if defined(FEAT_EVAL) || defined(PROTO)
-
-#define MAX_CALLBACK_DEPTH 20
-
 /*
  * All user-defined functions are found in this hashtable.
  */
@@ -3603,7 +3600,7 @@ call_callback(
     if (callback->cb_name == NULL || *callback->cb_name == NUL)
        return FAIL;
 
-    if (callback_depth > MAX_CALLBACK_DEPTH)
+    if (callback_depth > p_mfd)
     {
        emsg(_(e_command_too_recursive));
        return FAIL;
index 6120c538a7cc819ba66c9a4d146b32a6bfeee975..ec2d0e23bfd493150aef996daa5fcf58a5c42ebe 100644 (file)
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2183,
 /**/
     2182,
 /**/