Cast mask numbers to C ints once.

This commit is contained in:
James Coglan
2011-12-18 11:39:19 +00:00
parent 204cae5126
commit 5750e25a07
+6 -1
View File
@@ -16,11 +16,16 @@ void Init_faye_websocket_mask() {
VALUE method_faye_websocket_mask(VALUE self, VALUE payload, VALUE mask) {
int n = RARRAY_LEN(payload), i, p, m;
int mask_array[4];
VALUE unmasked = rb_ary_new2(n);
for (i = 0; i < 4; i++) {
mask_array[i] = NUM2INT(rb_ary_entry(mask, i));
}
for (i = 0; i < n; i++) {
p = NUM2INT(rb_ary_entry(payload, i));
m = NUM2INT(rb_ary_entry(mask, i % 4));
m = mask_array[i % 4];
rb_ary_store(unmasked, i, INT2NUM(p ^ m));
}
return unmasked;