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.
|
||||
|
||||
@item MES_MAX_STRING
|
||||
@vindex MES_MAX_STRING
|
||||
|
||||
The maximum size of a string. Default: 524,288.
|
||||
|
||||
@item 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 GC_SAFETY = 2000;
|
||||
|
||||
long MAX_STRING = 524288;
|
||||
|
||||
char *g_arena = 0;
|
||||
typedef long SCM;
|
||||
|
||||
int g_debug = 0;
|
||||
long g_free = 0;
|
||||
|
||||
char *g_buf = 0;
|
||||
|
||||
SCM g_continuations = 0;
|
||||
SCM g_symbols = 0;
|
||||
SCM g_stack = 0;
|
||||
|
@ -1647,6 +1651,10 @@ gc_init_cells () ///((internal))
|
|||
g_cells++;
|
||||
TYPE (0) = TCHAR;
|
||||
VALUE (0) = 'c';
|
||||
|
||||
// FIXME: remove MES_MAX_STRING, grow dynamically
|
||||
g_buf = (char*)malloc (MAX_STRING);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2276,6 +2284,8 @@ main (int argc, char *argv[])
|
|||
GC_SAFETY = atoi (p);
|
||||
if (p = getenv ("MES_STACK"))
|
||||
STACK_SIZE = atoi (p);
|
||||
if (p = getenv ("MES_MAX_STRING"))
|
||||
MAX_STRING = atoi (p);
|
||||
g_stdin = STDIN;
|
||||
g_stdout = STDOUT;
|
||||
g_stderr = STDERR;
|
||||
|
|
|
@ -18,13 +18,10 @@
|
|||
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define MAX_STRING 524288
|
||||
char g_buf[MAX_STRING];
|
||||
|
||||
void
|
||||
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 (":string too long[");
|
||||
|
|
Loading…
Reference in a new issue