[bugfix] pic_get_args supports 'e' specifier
This commit is contained in:
parent
70ace29b7c
commit
01c657ddba
20
src/vm.c
20
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) {
|
||||
|
|
Loading…
Reference in New Issue