core: Initialize g_buf dynamically, add MES_STRING_MAX override.
* src/mes.c (g_buf, MAX_STRING): Move from strings.c. (gc_init_cells): Initialize g_buf dynamically. (main): Add environment override MES_MAX_STRING for MAX_STRING. * doc/mes.texi (Environment Variables): Document it.
This commit is contained in:
parent
f43af6acc3
commit
d3e694c529
|
@ -757,6 +757,11 @@ The initial size of the arena @pxref{5.3,,, sicp, SICP} in cells. Default: 20,0
|
||||||
|
|
||||||
The maximum size of the arena in cells. Default: 100,000,000.
|
The maximum size of the arena in cells. Default: 100,000,000.
|
||||||
|
|
||||||
|
@item MES_MAX_STRING
|
||||||
|
@vindex MES_MAX_STRING
|
||||||
|
|
||||||
|
The maximum size of a string. Default: 524,288.
|
||||||
|
|
||||||
@item MES_DEBUG
|
@item MES_DEBUG
|
||||||
@vindex MES_DEBUG
|
@vindex MES_DEBUG
|
||||||
|
|
||||||
|
|
10
src/mes.c
10
src/mes.c
|
@ -38,12 +38,16 @@ long STACK_SIZE = 20000;
|
||||||
long JAM_SIZE = 20000;
|
long JAM_SIZE = 20000;
|
||||||
long GC_SAFETY = 2000;
|
long GC_SAFETY = 2000;
|
||||||
|
|
||||||
|
long MAX_STRING = 524288;
|
||||||
|
|
||||||
char *g_arena = 0;
|
char *g_arena = 0;
|
||||||
typedef long SCM;
|
typedef long SCM;
|
||||||
|
|
||||||
int g_debug = 0;
|
int g_debug = 0;
|
||||||
long g_free = 0;
|
long g_free = 0;
|
||||||
|
|
||||||
|
char *g_buf = 0;
|
||||||
|
|
||||||
SCM g_continuations = 0;
|
SCM g_continuations = 0;
|
||||||
SCM g_symbols = 0;
|
SCM g_symbols = 0;
|
||||||
SCM g_stack = 0;
|
SCM g_stack = 0;
|
||||||
|
@ -1647,6 +1651,10 @@ gc_init_cells () ///((internal))
|
||||||
g_cells++;
|
g_cells++;
|
||||||
TYPE (0) = TCHAR;
|
TYPE (0) = TCHAR;
|
||||||
VALUE (0) = 'c';
|
VALUE (0) = 'c';
|
||||||
|
|
||||||
|
// FIXME: remove MES_MAX_STRING, grow dynamically
|
||||||
|
g_buf = (char*)malloc (MAX_STRING);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2276,6 +2284,8 @@ main (int argc, char *argv[])
|
||||||
GC_SAFETY = atoi (p);
|
GC_SAFETY = atoi (p);
|
||||||
if (p = getenv ("MES_STACK"))
|
if (p = getenv ("MES_STACK"))
|
||||||
STACK_SIZE = atoi (p);
|
STACK_SIZE = atoi (p);
|
||||||
|
if (p = getenv ("MES_MAX_STRING"))
|
||||||
|
MAX_STRING = atoi (p);
|
||||||
g_stdin = STDIN;
|
g_stdin = STDIN;
|
||||||
g_stdout = STDOUT;
|
g_stdout = STDOUT;
|
||||||
g_stderr = STDERR;
|
g_stderr = STDERR;
|
||||||
|
|
|
@ -18,13 +18,10 @@
|
||||||
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MAX_STRING 524288
|
|
||||||
char g_buf[MAX_STRING];
|
|
||||||
|
|
||||||
void
|
void
|
||||||
assert_max_string (size_t i, char const* msg, char* string)
|
assert_max_string (size_t i, char const* msg, char* string)
|
||||||
{
|
{
|
||||||
if (i > MAX_STRING) // Mes must be able to make g_buf
|
if (i > MAX_STRING)
|
||||||
{
|
{
|
||||||
eputs (msg);
|
eputs (msg);
|
||||||
eputs (":string too long[");
|
eputs (":string too long[");
|
||||||
|
|
Loading…
Reference in a new issue