---
name: "SetRecLmt"
section: "3tcl"
platform: "linux"
package: "tcl8.3-doc"
version: "8.3.5-13"
release: "Debian 5.0 (Lenny)"
platforms: ["linux"]
url: "https://new.carta.tech/SetRecLmt/3tcl"
---

# SetRecLmt(3tcl)

set maximum allowable nesting depth in interpreter

```

```

## NAME

Tcl\_SetRecursionLimit - set maximum allowable nesting depth in interpreter

## SYNOPSIS

```
#include <tcl.h>

int
Tcl_SetRecursionLimit(interp, depth)
```

## ARGUMENTS

- Tcl\_Interp *\*interp* (in)

  Interpreter whose recursion limit is to be set. Must be greater than zero.

- int *depth* (in)

  New limit for nested calls to **Tcl\_Eval** for *interp*.

  ```

  ```

## DESCRIPTION

At any given time Tcl enforces a limit on the number of recursive calls that may be active for **Tcl\_Eval** and related procedures such as **Tcl\_GlobalEval**. Any call to **Tcl\_Eval** that exceeds this depth is aborted with an error. By default the recursion limit is 1000.

**Tcl\_SetRecursionLimit** may be used to change the maximum allowable nesting depth for an interpreter. The *depth* argument specifies a new limit for *interp*, and **Tcl\_SetRecursionLimit** returns the old limit. To read out the old limit without modifying it, invoke **Tcl\_SetRecursionLimit** with *depth* equal to 0.

The **Tcl\_SetRecursionLimit** only sets the size of the Tcl call stack:  it cannot by itself prevent stack overflows on the C stack being used by the application.  If your machine has a limit on the size of the C stack, you may get stack overflows before reaching the limit set by **Tcl\_SetRecursionLimit**. If this happens, see if there is a mechanism in your system for increasing the maximum size of the C stack.

## KEYWORDS

nesting depth, recursion
