From 01c657ddbab2f4c2459f622ffa0a81e7f75e2450 Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Sun, 29 Jun 2014 17:45:25 +0900 Subject: [PATCH] [bugfix] pic_get_args supports 'e' specifier --- src/vm.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/vm.c b/src/vm.c index 8e2ddb6c..39e0d6f8 100644 --- a/src/vm.c +++ b/src/vm.c @@ -51,6 +51,7 @@ pic_get_proc(pic_state *pic) * l lambda object * p port object * d dictionary object + * e error object * * | optional operator * * variable length operator @@ -346,8 +347,25 @@ pic_get_args(pic_state *pic, const char *format, ...) } break; } + case 'e': { + struct pic_error **e; + pic_value v; + + e = va_arg(ap, struct pic_error **); + if (i < argc) { + v = GET_OPERAND(pic,i); + if (pic_error_p(v)) { + *e = pic_error_ptr(v); + } + else { + pic_error(pic, "pic_get_args, expected error"); + } + i++; + } + break; + } default: - pic_error(pic, "pic_get_args: invalid argument specifier given"); + pic_errorf(pic, "pic_get_args: invalid argument specifier '%c' given", c); } } if ('*' == c) {