get rid of prepared_buf
svn: r11532
This commit is contained in:
parent
9c4eaa2c22
commit
1bca658b29
|
@ -98,8 +98,6 @@ static Scheme_Object *arity_property;
|
||||||
static Scheme_Object *check_arity_property_value_ok(int argc, Scheme_Object *argv[]);
|
static Scheme_Object *check_arity_property_value_ok(int argc, Scheme_Object *argv[]);
|
||||||
|
|
||||||
static char *init_buf(long *len, long *blen);
|
static char *init_buf(long *len, long *blen);
|
||||||
static char *prepared_buf;
|
|
||||||
static long prepared_buf_len;
|
|
||||||
|
|
||||||
static Scheme_Object *fatal_symbol, *error_symbol, *warning_symbol, *info_symbol, *debug_symbol;
|
static Scheme_Object *fatal_symbol, *error_symbol, *warning_symbol, *info_symbol, *debug_symbol;
|
||||||
#ifndef INIT_SYSLOG_LEVEL
|
#ifndef INIT_SYSLOG_LEVEL
|
||||||
|
@ -190,7 +188,9 @@ Scheme_Config *scheme_init_error_escape_proc(Scheme_Config *config)
|
||||||
or error number for scheme_hostname_error()
|
or error number for scheme_hostname_error()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static long sch_vsprintf(char *s, long maxlen, const char *msg, va_list args)
|
static long sch_vsprintf(char *s, long maxlen, const char *msg, va_list args, char **_s)
|
||||||
|
/* NULL for s means allocate the buffer here (and return in (_s), but this function
|
||||||
|
doesn't allocate before extracting arguments from the stack. */
|
||||||
{
|
{
|
||||||
long i, j;
|
long i, j;
|
||||||
char buf[100];
|
char buf[100];
|
||||||
|
@ -259,6 +259,11 @@ static long sch_vsprintf(char *s, long maxlen, const char *msg, va_list args)
|
||||||
ip = 0;
|
ip = 0;
|
||||||
dp = 0;
|
dp = 0;
|
||||||
|
|
||||||
|
if (!s) {
|
||||||
|
s = init_buf(NULL, &maxlen);
|
||||||
|
*_s = s;
|
||||||
|
}
|
||||||
|
|
||||||
--maxlen;
|
--maxlen;
|
||||||
|
|
||||||
i = j = 0;
|
i = j = 0;
|
||||||
|
@ -508,7 +513,7 @@ static long scheme_sprintf(char *s, long maxlen, const char *msg, ...)
|
||||||
GC_CAN_IGNORE va_list args;
|
GC_CAN_IGNORE va_list args;
|
||||||
|
|
||||||
HIDE_FROM_XFORM(va_start(args, msg));
|
HIDE_FROM_XFORM(va_start(args, msg));
|
||||||
len = sch_vsprintf(s, maxlen, msg, args);
|
len = sch_vsprintf(s, maxlen, msg, args, NULL);
|
||||||
HIDE_FROM_XFORM(va_end(args));
|
HIDE_FROM_XFORM(va_end(args));
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
|
@ -648,10 +653,6 @@ void scheme_init_error(Scheme_Env *env)
|
||||||
"default-error-value->string-handler",
|
"default-error-value->string-handler",
|
||||||
2, 2);
|
2, 2);
|
||||||
|
|
||||||
REGISTER_SO(prepared_buf);
|
|
||||||
prepared_buf = "";
|
|
||||||
prepared_buf = init_buf(NULL, &prepared_buf_len);
|
|
||||||
|
|
||||||
REGISTER_SO(fatal_symbol);
|
REGISTER_SO(fatal_symbol);
|
||||||
REGISTER_SO(error_symbol);
|
REGISTER_SO(error_symbol);
|
||||||
REGISTER_SO(warning_symbol);
|
REGISTER_SO(warning_symbol);
|
||||||
|
@ -838,12 +839,6 @@ static char *init_buf(long *len, long *_size)
|
||||||
return (char *)scheme_malloc_atomic(size);
|
return (char *)scheme_malloc_atomic(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void scheme_reset_prepared_error_buffer(void)
|
|
||||||
{
|
|
||||||
if (prepared_buf)
|
|
||||||
prepared_buf = init_buf(NULL, &prepared_buf_len);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
scheme_signal_error (const char *msg, ...)
|
scheme_signal_error (const char *msg, ...)
|
||||||
{
|
{
|
||||||
|
@ -851,15 +846,10 @@ scheme_signal_error (const char *msg, ...)
|
||||||
char *buffer;
|
char *buffer;
|
||||||
long len;
|
long len;
|
||||||
|
|
||||||
/* Precise GC: Don't allocate before getting hidden args off stack */
|
|
||||||
buffer = prepared_buf;
|
|
||||||
|
|
||||||
HIDE_FROM_XFORM(va_start(args, msg));
|
HIDE_FROM_XFORM(va_start(args, msg));
|
||||||
len = sch_vsprintf(buffer, prepared_buf_len, msg, args);
|
len = sch_vsprintf(NULL, 0, msg, args, &buffer);
|
||||||
HIDE_FROM_XFORM(va_end(args));
|
HIDE_FROM_XFORM(va_end(args));
|
||||||
|
|
||||||
prepared_buf = init_buf(NULL, &prepared_buf_len);
|
|
||||||
|
|
||||||
if (scheme_current_thread->current_local_env) {
|
if (scheme_current_thread->current_local_env) {
|
||||||
char *s2 = " [during expansion]";
|
char *s2 = " [during expansion]";
|
||||||
strcpy(buffer + len, s2);
|
strcpy(buffer + len, s2);
|
||||||
|
@ -888,15 +878,10 @@ void scheme_warning(char *msg, ...)
|
||||||
char *buffer;
|
char *buffer;
|
||||||
long len;
|
long len;
|
||||||
|
|
||||||
/* Precise GC: Don't allocate before getting hidden args off stack */
|
|
||||||
buffer = prepared_buf;
|
|
||||||
|
|
||||||
HIDE_FROM_XFORM(va_start(args, msg));
|
HIDE_FROM_XFORM(va_start(args, msg));
|
||||||
len = sch_vsprintf(buffer, prepared_buf_len, msg, args);
|
len = sch_vsprintf(NULL, 0, msg, args, &buffer);
|
||||||
HIDE_FROM_XFORM(va_end(args));
|
HIDE_FROM_XFORM(va_end(args));
|
||||||
|
|
||||||
prepared_buf = init_buf(NULL, &prepared_buf_len);
|
|
||||||
|
|
||||||
buffer[len++] = '\n';
|
buffer[len++] = '\n';
|
||||||
buffer[len] = 0;
|
buffer[len] = 0;
|
||||||
|
|
||||||
|
@ -917,15 +902,10 @@ void scheme_log(Scheme_Logger *logger, int level, int flags,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Precise GC: Don't allocate before getting hidden args off stack */
|
|
||||||
buffer = prepared_buf;
|
|
||||||
|
|
||||||
HIDE_FROM_XFORM(va_start(args, msg));
|
HIDE_FROM_XFORM(va_start(args, msg));
|
||||||
len = sch_vsprintf(buffer, prepared_buf_len, msg, args);
|
len = sch_vsprintf(NULL, 0, msg, args, &buffer);
|
||||||
HIDE_FROM_XFORM(va_end(args));
|
HIDE_FROM_XFORM(va_end(args));
|
||||||
|
|
||||||
prepared_buf = init_buf(NULL, &prepared_buf_len);
|
|
||||||
|
|
||||||
buffer[len] = 0;
|
buffer[len] = 0;
|
||||||
|
|
||||||
scheme_log_message(logger, level, buffer, len, NULL);
|
scheme_log_message(logger, level, buffer, len, NULL);
|
||||||
|
@ -1531,15 +1511,10 @@ void scheme_read_err(Scheme_Object *port,
|
||||||
int show_loc;
|
int show_loc;
|
||||||
Scheme_Object *loc;
|
Scheme_Object *loc;
|
||||||
|
|
||||||
/* Precise GC: Don't allocate before getting hidden args off stack */
|
|
||||||
s = prepared_buf;
|
|
||||||
|
|
||||||
HIDE_FROM_XFORM(va_start(args, detail));
|
HIDE_FROM_XFORM(va_start(args, detail));
|
||||||
slen = sch_vsprintf(s, prepared_buf_len, detail, args);
|
slen = sch_vsprintf(NULL, 0, detail, args, &s);
|
||||||
HIDE_FROM_XFORM(va_end(args));
|
HIDE_FROM_XFORM(va_end(args));
|
||||||
|
|
||||||
prepared_buf = init_buf(NULL, &prepared_buf_len);
|
|
||||||
|
|
||||||
ls = "";
|
ls = "";
|
||||||
fnlen = 0;
|
fnlen = 0;
|
||||||
|
|
||||||
|
@ -1802,14 +1777,9 @@ void scheme_wrong_syntax(const char *where,
|
||||||
} else {
|
} else {
|
||||||
GC_CAN_IGNORE va_list args;
|
GC_CAN_IGNORE va_list args;
|
||||||
|
|
||||||
/* Precise GC: Don't allocate before getting hidden args off stack */
|
|
||||||
s = prepared_buf;
|
|
||||||
|
|
||||||
HIDE_FROM_XFORM(va_start(args, detail));
|
HIDE_FROM_XFORM(va_start(args, detail));
|
||||||
slen = sch_vsprintf(s, prepared_buf_len, detail, args);
|
slen = sch_vsprintf(NULL, 0, detail, args, &s);
|
||||||
HIDE_FROM_XFORM(va_end(args));
|
HIDE_FROM_XFORM(va_end(args));
|
||||||
|
|
||||||
prepared_buf = init_buf(NULL, &prepared_buf_len);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
do_wrong_syntax(where, detail_form, form, s, slen, scheme_null);
|
do_wrong_syntax(where, detail_form, form, s, slen, scheme_null);
|
||||||
|
@ -1830,14 +1800,9 @@ void scheme_wrong_syntax_with_more_sources(const char *where,
|
||||||
} else {
|
} else {
|
||||||
GC_CAN_IGNORE va_list args;
|
GC_CAN_IGNORE va_list args;
|
||||||
|
|
||||||
/* Precise GC: Don't allocate before getting hidden args off stack */
|
|
||||||
s = prepared_buf;
|
|
||||||
|
|
||||||
HIDE_FROM_XFORM(va_start(args, detail));
|
HIDE_FROM_XFORM(va_start(args, detail));
|
||||||
slen = sch_vsprintf(s, prepared_buf_len, detail, args);
|
slen = sch_vsprintf(NULL, 0, detail, args, &s);
|
||||||
HIDE_FROM_XFORM(va_end(args));
|
HIDE_FROM_XFORM(va_end(args));
|
||||||
|
|
||||||
prepared_buf = init_buf(NULL, &prepared_buf_len);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
do_wrong_syntax(where, detail_form, form, s, slen, extra_sources);
|
do_wrong_syntax(where, detail_form, form, s, slen, extra_sources);
|
||||||
|
@ -1905,14 +1870,9 @@ void scheme_wrong_return_arity(const char *where,
|
||||||
} else {
|
} else {
|
||||||
GC_CAN_IGNORE va_list args;
|
GC_CAN_IGNORE va_list args;
|
||||||
|
|
||||||
/* Precise GC: Don't allocate before getting hidden args off stack */
|
|
||||||
s = prepared_buf;
|
|
||||||
|
|
||||||
HIDE_FROM_XFORM(va_start(args, detail));
|
HIDE_FROM_XFORM(va_start(args, detail));
|
||||||
slen = sch_vsprintf(s, prepared_buf_len, detail, args);
|
slen = sch_vsprintf(NULL, 0, detail, args, &s);
|
||||||
HIDE_FROM_XFORM(va_end(args));
|
HIDE_FROM_XFORM(va_end(args));
|
||||||
|
|
||||||
prepared_buf = init_buf(NULL, &prepared_buf_len);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer = init_buf(NULL, &blen);
|
buffer = init_buf(NULL, &blen);
|
||||||
|
@ -1990,14 +1950,9 @@ void scheme_raise_out_of_memory(const char *where, const char *msg, ...)
|
||||||
} else {
|
} else {
|
||||||
GC_CAN_IGNORE va_list args;
|
GC_CAN_IGNORE va_list args;
|
||||||
|
|
||||||
/* Precise GC: Don't allocate before getting hidden args off stack */
|
|
||||||
s = prepared_buf;
|
|
||||||
|
|
||||||
HIDE_FROM_XFORM(va_start(args, msg));
|
HIDE_FROM_XFORM(va_start(args, msg));
|
||||||
slen = sch_vsprintf(s, prepared_buf_len, msg, args);
|
slen = sch_vsprintf(NULL, 0, msg, args, &s);
|
||||||
HIDE_FROM_XFORM(va_end(args));
|
HIDE_FROM_XFORM(va_end(args));
|
||||||
|
|
||||||
prepared_buf = init_buf(NULL, &prepared_buf_len);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
scheme_raise_exn(MZEXN_FAIL_OUT_OF_MEMORY,
|
scheme_raise_exn(MZEXN_FAIL_OUT_OF_MEMORY,
|
||||||
|
@ -3120,8 +3075,6 @@ scheme_raise_exn(int id, ...)
|
||||||
char *buffer;
|
char *buffer;
|
||||||
|
|
||||||
/* Precise GC: Don't allocate before getting hidden args off stack */
|
/* Precise GC: Don't allocate before getting hidden args off stack */
|
||||||
buffer = prepared_buf;
|
|
||||||
|
|
||||||
HIDE_FROM_XFORM(va_start(args, id));
|
HIDE_FROM_XFORM(va_start(args, id));
|
||||||
|
|
||||||
if (id == MZEXN_OTHER)
|
if (id == MZEXN_OTHER)
|
||||||
|
@ -3135,11 +3088,9 @@ scheme_raise_exn(int id, ...)
|
||||||
|
|
||||||
msg = mzVA_ARG(args, char*);
|
msg = mzVA_ARG(args, char*);
|
||||||
|
|
||||||
alen = sch_vsprintf(buffer, prepared_buf_len, msg, args);
|
alen = sch_vsprintf(NULL, 0, msg, args, &buffer);
|
||||||
HIDE_FROM_XFORM(va_end(args));
|
HIDE_FROM_XFORM(va_end(args));
|
||||||
|
|
||||||
prepared_buf = init_buf(NULL, &prepared_buf_len);
|
|
||||||
|
|
||||||
#ifndef NO_SCHEME_EXNS
|
#ifndef NO_SCHEME_EXNS
|
||||||
eargs[0] = scheme_make_immutable_sized_utf8_string(buffer, alen);
|
eargs[0] = scheme_make_immutable_sized_utf8_string(buffer, alen);
|
||||||
eargs[1] = TMP_CMARK_VALUE;
|
eargs[1] = TMP_CMARK_VALUE;
|
||||||
|
|
|
@ -2728,8 +2728,6 @@ void scheme_out_of_string_range(const char *name, const char *which,
|
||||||
|
|
||||||
const char *scheme_number_suffix(int);
|
const char *scheme_number_suffix(int);
|
||||||
|
|
||||||
void scheme_reset_prepared_error_buffer(void);
|
|
||||||
|
|
||||||
const char *scheme_hostname_error(int err);
|
const char *scheme_hostname_error(int err);
|
||||||
|
|
||||||
char *scheme_make_args_string(char *s, int which, int argc, Scheme_Object **argv, long *olen);
|
char *scheme_make_args_string(char *s, int which, int argc, Scheme_Object **argv, long *olen);
|
||||||
|
|
|
@ -338,7 +338,6 @@ make_a_symbol(const char *name, unsigned int len, int kind)
|
||||||
|
|
||||||
if (len > scheme_max_found_symbol_name) {
|
if (len > scheme_max_found_symbol_name) {
|
||||||
scheme_max_found_symbol_name = len;
|
scheme_max_found_symbol_name = len;
|
||||||
scheme_reset_prepared_error_buffer();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (Scheme_Object *) sym;
|
return (Scheme_Object *) sym;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user