@@ -4,7 +4,7 @@ static VALUE
4
4
cleanup_semian_resource_acquire (VALUE self );
5
5
6
6
static void
7
- check_tickets_xor_quota_arg (VALUE tickets , VALUE quota );
7
+ check_tickets_xor_quota_arg (VALUE tickets , VALUE min_tickets , VALUE quota );
8
8
9
9
static double
10
10
check_quota_arg (VALUE quota );
@@ -206,7 +206,7 @@ VALUE
206
206
semian_resource_initialize (VALUE self , VALUE id , VALUE tickets , VALUE quota , VALUE permissions , VALUE default_timeout , VALUE min_tickets )
207
207
{
208
208
// Check and cast arguments
209
- check_tickets_xor_quota_arg (tickets , quota );
209
+ check_tickets_xor_quota_arg (tickets , min_tickets , quota );
210
210
double c_quota = check_quota_arg (quota );
211
211
int c_tickets = check_tickets_arg (tickets );
212
212
long c_permissions = check_permissions_arg (permissions );
@@ -257,10 +257,22 @@ check_permissions_arg(VALUE permissions)
257
257
}
258
258
259
259
static void
260
- check_tickets_xor_quota_arg (VALUE tickets , VALUE quota )
260
+ check_tickets_xor_quota_arg (VALUE tickets , VALUE min_tickets , VALUE quota )
261
261
{
262
- if ((TYPE (tickets ) == T_NIL && TYPE (quota ) == T_NIL ) || (TYPE (tickets ) != T_NIL && TYPE (quota ) != T_NIL )){
263
- rb_raise (rb_eArgError , "Must pass exactly one of ticket or quota" );
262
+ const char * msg = "Must pass exactly one of ticket or quota/min_tickets" ;
263
+ if (TYPE (quota ) != T_NIL ) {
264
+ if (TYPE (tickets ) != T_NIL ) {
265
+ dprintf ("FOO" );
266
+ rb_raise (rb_eArgError , msg );
267
+ }
268
+ } else if (TYPE (tickets ) != T_NIL ) {
269
+ if (TYPE (quota ) != T_NIL || TYPE (min_tickets ) != T_NIL ) {
270
+ dprintf ("FOO" );
271
+ rb_raise (rb_eArgError , msg );
272
+ }
273
+ } else {
274
+ dprintf ("FOO" );
275
+ rb_raise (rb_eArgError , msg );
264
276
}
265
277
}
266
278
0 commit comments