#include <stdio.h>
#include <stdarg.h>
int varfun(int i, ...);
int main()
{
printf("Expected=2; answer=%d\n", varfun
(1,2)); printf("Expected=5; answer=%d\n", varfun
(1,2,3,4,5)); printf("Expected=5; answer=%d <--- it's broken\n", varfun
(1,2,-3,4,5)); return 0;
}
int varfun(int n_args, ...)
{
va_list ap;
int i, t, k;
k = 1;
for(i
=0;i
<= va_arg(ap
, int);i
++){ k+=1;
}
return k;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRhcmcuaD4KCmludCB2YXJmdW4oaW50IGksIC4uLik7CgppbnQgbWFpbigpCnsKCQlwcmludGYoIkV4cGVjdGVkPTI7IGFuc3dlcj0lZFxuIiwgdmFyZnVuKDEsMikpOwogICAgICAgIHByaW50ZigiRXhwZWN0ZWQ9NTsgYW5zd2VyPSVkXG4iLCB2YXJmdW4oMSwyLDMsNCw1KSk7CiAgICAgICAgcHJpbnRmKCJFeHBlY3RlZD01OyBhbnN3ZXI9JWQgPC0tLSBpdCdzIGJyb2tlblxuIiwgdmFyZnVuKDEsMiwtMyw0LDUpKTsKICAgICAgICByZXR1cm4gMDsKfQoKaW50IHZhcmZ1bihpbnQgbl9hcmdzLCAuLi4pCnsKICAgICAgICB2YV9saXN0IGFwOwogICAgICAgIGludCBpLCB0LCBrOwogICAgICAgIGsgPSAxOwogICAgICAgIHZhX3N0YXJ0KGFwLCBuX2FyZ3MpOwogICAgICAgIGZvcihpPTA7aSA8PSB2YV9hcmcoYXAsIGludCk7aSsrKXsKICAgICAgICAgICAgICAgays9MTsKICAgICAgICB9CiAgICAgICAgdmFfZW5kKGFwKTsKICAgICAgICByZXR1cm4gazsKfQ==