mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-23 04:52:42 -08:00
fix coverity issue Missing varargs init or cleanup
This commit is contained in:
parent
6c8449b147
commit
a74094de9a
10 changed files with 27 additions and 5 deletions
|
|
@ -208,6 +208,7 @@ ecl_char_eq(cl_object x, cl_object y)
|
||||||
if (ecl_char_eq(ecl_va_arg(ds), c)) {
|
if (ecl_char_eq(ecl_va_arg(ds), c)) {
|
||||||
@(return ECL_NIL);
|
@(return ECL_NIL);
|
||||||
}
|
}
|
||||||
|
ecl_va_end(ds);
|
||||||
}
|
}
|
||||||
@(return ECL_T);
|
@(return ECL_T);
|
||||||
} @)
|
} @)
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ si_safe_eval(cl_narg narg, cl_object form, cl_object env, ...)
|
||||||
cl_object err_value;
|
cl_object err_value;
|
||||||
va_list args; va_start(args, env);
|
va_list args; va_start(args, env);
|
||||||
err_value = va_arg(args, cl_object);
|
err_value = va_arg(args, cl_object);
|
||||||
|
va_end(args);
|
||||||
return _ecl_funcall4(@'ext::safe-eval', form, env, err_value);
|
return _ecl_funcall4(@'ext::safe-eval', form, env, err_value);
|
||||||
}
|
}
|
||||||
return _ecl_funcall3(@'ext::safe-eval', form, env);
|
return _ecl_funcall3(@'ext::safe-eval', form, env);
|
||||||
|
|
@ -98,6 +99,7 @@ si_string_to_object(cl_narg narg, cl_object string, ...)
|
||||||
cl_object err_value;
|
cl_object err_value;
|
||||||
va_list args; va_start(args, string);
|
va_list args; va_start(args, string);
|
||||||
err_value = va_arg(args, cl_object);
|
err_value = va_arg(args, cl_object);
|
||||||
|
va_end(args);
|
||||||
return _ecl_funcall3(@'si::string-to-object', string, err_value);
|
return _ecl_funcall3(@'si::string-to-object', string, err_value);
|
||||||
}
|
}
|
||||||
return _ecl_funcall2(@'si::string-to-object', string);
|
return _ecl_funcall2(@'si::string-to-object', string);
|
||||||
|
|
@ -110,6 +112,7 @@ si_signal_simple_error(cl_narg narg, cl_object condition, cl_object continuable,
|
||||||
cl_object rest;
|
cl_object rest;
|
||||||
ecl_va_start(args, format_args, narg, 4);
|
ecl_va_start(args, format_args, narg, 4);
|
||||||
rest = cl_grab_rest_args(args);
|
rest = cl_grab_rest_args(args);
|
||||||
|
ecl_va_end(args);
|
||||||
return cl_apply(6, @'si::signal-simple-error', condition, continuable,
|
return cl_apply(6, @'si::signal-simple-error', condition, continuable,
|
||||||
format, format_args, rest);
|
format, format_args, rest);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ user_function_dispatch(cl_narg narg, ...)
|
||||||
fun = fun->instance.slots[fun->instance.length - 1];
|
fun = fun->instance.slots[fun->instance.length - 1];
|
||||||
output = ecl_apply_from_stack_frame(frame, fun);
|
output = ecl_apply_from_stack_frame(frame, fun);
|
||||||
ecl_stack_frame_close(frame);
|
ecl_stack_frame_close(frame);
|
||||||
|
ecl_va_end(args);
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -104,12 +104,15 @@ void
|
||||||
FEerror(const char *s, int narg, ...)
|
FEerror(const char *s, int narg, ...)
|
||||||
{
|
{
|
||||||
ecl_va_list args;
|
ecl_va_list args;
|
||||||
|
cl_object rest;
|
||||||
ecl_va_start(args, narg, narg, 0);
|
ecl_va_start(args, narg, narg, 0);
|
||||||
ecl_enable_interrupts();
|
ecl_enable_interrupts();
|
||||||
|
rest = cl_grab_rest_args(args);
|
||||||
|
ecl_va_end(args);
|
||||||
funcall(4, @'si::universal-error-handler',
|
funcall(4, @'si::universal-error-handler',
|
||||||
ECL_NIL, /* not correctable */
|
ECL_NIL, /* not correctable */
|
||||||
make_constant_base_string(s), /* condition text */
|
make_constant_base_string(s), /* condition text */
|
||||||
cl_grab_rest_args(args));
|
rest);
|
||||||
_ecl_unexpected_return();
|
_ecl_unexpected_return();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -208,7 +208,9 @@ monotonic(int s, int t, int narg, ecl_va_list nums)
|
||||||
|
|
||||||
#define MONOTONIC(i, j) (cl_narg narg, ...) \
|
#define MONOTONIC(i, j) (cl_narg narg, ...) \
|
||||||
{ ecl_va_list nums; ecl_va_start(nums, narg, narg, 0); \
|
{ ecl_va_list nums; ecl_va_start(nums, narg, narg, 0); \
|
||||||
return monotonic(i, j, narg, nums); }
|
cl_object result = monotonic(i, j, narg, nums); \
|
||||||
|
ecl_va_end(nums); \
|
||||||
|
return result; }
|
||||||
|
|
||||||
cl_object @<= MONOTONIC( 1, 0)
|
cl_object @<= MONOTONIC( 1, 0)
|
||||||
cl_object @>= MONOTONIC(-1, 0)
|
cl_object @>= MONOTONIC(-1, 0)
|
||||||
|
|
|
||||||
|
|
@ -188,6 +188,7 @@ ecl_number_equalp(cl_object x, cl_object y)
|
||||||
if (ecl_number_equalp(numi, ecl_va_arg(numb))) {
|
if (ecl_number_equalp(numi, ecl_va_arg(numb))) {
|
||||||
@(return ECL_NIL);
|
@(return ECL_NIL);
|
||||||
}
|
}
|
||||||
|
ecl_va_end(numb);
|
||||||
}
|
}
|
||||||
@(return ECL_T);
|
@(return ECL_T);
|
||||||
@)
|
@)
|
||||||
|
|
|
||||||
|
|
@ -51,12 +51,15 @@ void
|
||||||
CEpackage_error(const char *message, const char *continue_message, cl_object package, int narg, ...)
|
CEpackage_error(const char *message, const char *continue_message, cl_object package, int narg, ...)
|
||||||
{
|
{
|
||||||
ecl_va_list args;
|
ecl_va_list args;
|
||||||
|
cl_object arg;
|
||||||
ecl_va_start(args, narg, narg, 0);
|
ecl_va_start(args, narg, narg, 0);
|
||||||
|
arg = narg? cl_grab_rest_args(args) : cl_list(1,package);
|
||||||
|
ecl_va_end(args);
|
||||||
si_signal_simple_error(6,
|
si_signal_simple_error(6,
|
||||||
@'package-error',
|
@'package-error',
|
||||||
make_constant_base_string(continue_message),
|
make_constant_base_string(continue_message),
|
||||||
make_constant_base_string(message), /* format control */
|
make_constant_base_string(message), /* format control */
|
||||||
narg? cl_grab_rest_args(args) : cl_list(1,package),
|
arg,
|
||||||
@':package', package);
|
@':package', package);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -439,6 +439,7 @@ mp_process_preset(cl_narg narg, cl_object process, cl_object function, ...)
|
||||||
assert_type_process(process);
|
assert_type_process(process);
|
||||||
process->process.function = function;
|
process->process.function = function;
|
||||||
process->process.args = cl_grab_rest_args(args);
|
process->process.args = cl_grab_rest_args(args);
|
||||||
|
ecl_va_end(args);
|
||||||
@(return process);
|
@(return process);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -644,6 +645,7 @@ cl_object
|
||||||
mp_process_run_function(cl_narg narg, cl_object name, cl_object function, ...)
|
mp_process_run_function(cl_narg narg, cl_object name, cl_object function, ...)
|
||||||
{
|
{
|
||||||
cl_object process;
|
cl_object process;
|
||||||
|
cl_object rest;
|
||||||
ecl_va_list args;
|
ecl_va_list args;
|
||||||
ecl_va_start(args, function, narg, 2);
|
ecl_va_start(args, function, narg, 2);
|
||||||
if (narg < 2)
|
if (narg < 2)
|
||||||
|
|
@ -653,8 +655,10 @@ mp_process_run_function(cl_narg narg, cl_object name, cl_object function, ...)
|
||||||
} else {
|
} else {
|
||||||
process = mp_make_process(2, @':name', name);
|
process = mp_make_process(2, @':name', name);
|
||||||
}
|
}
|
||||||
|
rest = cl_grab_rest_args(args);
|
||||||
|
ecl_va_end(args);
|
||||||
cl_apply(4, @'mp::process-preset', process, function,
|
cl_apply(4, @'mp::process-preset', process, function,
|
||||||
cl_grab_rest_args(args));
|
rest);
|
||||||
return mp_process_enable(process);
|
return mp_process_enable(process);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -672,6 +676,7 @@ mp_process_run_function_wait(cl_narg narg, ...)
|
||||||
cl_sleep(wait);
|
cl_sleep(wait);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ecl_va_end(args);
|
||||||
@(return process);
|
@(return process);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -386,5 +386,6 @@ print_lock(char *prefix, cl_object l, ...)
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
ecl_giveup_spinlock(&lock);
|
ecl_giveup_spinlock(&lock);
|
||||||
}
|
}
|
||||||
|
va_end(args);
|
||||||
}
|
}
|
||||||
/*#define print_lock(a,b,c) (void)0*/
|
/*#define print_lock(a,b,c) (void)0*/
|
||||||
|
|
|
||||||
|
|
@ -194,6 +194,7 @@ extern cl_object si_constant_form_value _ECL_ARGS((cl_narg narg, cl_object form,
|
||||||
va_list args; \
|
va_list args; \
|
||||||
va_start(args, lastarg); \
|
va_start(args, lastarg); \
|
||||||
frame->frame.base = (cl_object*)args; \
|
frame->frame.base = (cl_object*)args; \
|
||||||
|
va_end(args); \
|
||||||
} else { \
|
} else { \
|
||||||
frame->frame.base = env->stack_top - narg; \
|
frame->frame.base = env->stack_top - narg; \
|
||||||
}
|
}
|
||||||
|
|
@ -207,7 +208,7 @@ extern cl_object si_constant_form_value _ECL_ARGS((cl_narg narg, cl_object form,
|
||||||
frame->frame.t = t_frame; \
|
frame->frame.t = t_frame; \
|
||||||
frame->frame.env = env; \
|
frame->frame.env = env; \
|
||||||
frame->frame.size = narg; \
|
frame->frame.size = narg; \
|
||||||
if (narg < ECL_C_ARGUMENTS_LIMIT) { \
|
if (narg < ECL_C_ARGUMENTS_LIMIT) { \
|
||||||
cl_object *p = frame->frame.base = env->values; \
|
cl_object *p = frame->frame.base = env->values; \
|
||||||
va_list args; \
|
va_list args; \
|
||||||
va_start(args, lastarg); \
|
va_start(args, lastarg); \
|
||||||
|
|
@ -215,6 +216,7 @@ extern cl_object si_constant_form_value _ECL_ARGS((cl_narg narg, cl_object form,
|
||||||
*p = va_arg(args, cl_object); \
|
*p = va_arg(args, cl_object); \
|
||||||
++p; \
|
++p; \
|
||||||
} \
|
} \
|
||||||
|
va_end(args); \
|
||||||
frame->frame.stack = (cl_object*)0x1; \
|
frame->frame.stack = (cl_object*)0x1; \
|
||||||
} else { \
|
} else { \
|
||||||
frame->frame.base = env->stack_top - narg; \
|
frame->frame.base = env->stack_top - narg; \
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue