a couple of fixes
This commit is contained in:
parent
29e538e935
commit
68807b8df5
|
@ -493,16 +493,19 @@ static VALUE get_value(const char* buffer, int* position, int type) {
|
||||||
int flags_length = strlen(buffer + *position);
|
int flags_length = strlen(buffer + *position);
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
char flags[4];
|
int flags;
|
||||||
flags[0] = 0;
|
|
||||||
char extra[10];
|
char extra[10];
|
||||||
extra[0] = 0;
|
extra[0] = 0;
|
||||||
for (i = 0; i < flags_length; i++) {
|
for (i = 0; i < flags_length; i++) {
|
||||||
char flag = buffer[*position + i];
|
char flag = buffer[*position + i];
|
||||||
if (flag == 'i' || flag == 'm' || flag == 'x') {
|
if (flag == 'i') {
|
||||||
if (strlen(flags) < 3) {
|
flags |= RE_OPTION_IGNORECASE;
|
||||||
strncat(flags, &flag, 1);
|
|
||||||
}
|
}
|
||||||
|
else if (flag == 'm') {
|
||||||
|
flags |= RE_OPTION_MULTILINE;
|
||||||
|
}
|
||||||
|
else if (flag == 'x') {
|
||||||
|
flags |= RE_OPTION_EXTENDED;
|
||||||
}
|
}
|
||||||
else if (strlen(extra) < 9) {
|
else if (strlen(extra) < 9) {
|
||||||
strncat(extra, &flag, 1);
|
strncat(extra, &flag, 1);
|
||||||
|
@ -510,7 +513,7 @@ static VALUE get_value(const char* buffer, int* position, int type) {
|
||||||
}
|
}
|
||||||
VALUE argv[3] = {
|
VALUE argv[3] = {
|
||||||
pattern,
|
pattern,
|
||||||
rb_str_new2(flags),
|
INT2FIX(flags),
|
||||||
rb_str_new2(extra)
|
rb_str_new2(extra)
|
||||||
};
|
};
|
||||||
value = rb_class_new_instance(3, argv, RegexpOfHolding);
|
value = rb_class_new_instance(3, argv, RegexpOfHolding);
|
||||||
|
@ -538,14 +541,14 @@ static VALUE get_value(const char* buffer, int* position, int type) {
|
||||||
int value_length;
|
int value_length;
|
||||||
memcpy(&value_length, buffer + *position, 4);
|
memcpy(&value_length, buffer + *position, 4);
|
||||||
value = ID2SYM(rb_intern(buffer + *position + 4));
|
value = ID2SYM(rb_intern(buffer + *position + 4));
|
||||||
*position += value_length + 5;
|
*position += value_length + 4;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 16:
|
case 16:
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
memcpy(&i, buffer + *position, 4);
|
memcpy(&i, buffer + *position, 4);
|
||||||
value = INT2FIX(i);
|
value = LL2NUM(i);
|
||||||
*position += 4;
|
*position += 4;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,7 +93,7 @@ EOS
|
||||||
# Turn those BSON bytes back into a Ruby object.
|
# Turn those BSON bytes back into a Ruby object.
|
||||||
#
|
#
|
||||||
# We're passing a nil db to the contructor here, but that's OK because
|
# We're passing a nil db to the contructor here, but that's OK because
|
||||||
# the BSON DBFef bytes don't contain the db object in any case, and we
|
# the BSON DBRef bytes don't contain the db object in any case, and we
|
||||||
# don't care what the database is.
|
# don't care what the database is.
|
||||||
obj_from_bson = BSON.new.deserialize(ByteBuffer.new(bson_from_ruby))
|
obj_from_bson = BSON.new.deserialize(ByteBuffer.new(bson_from_ruby))
|
||||||
assert_kind_of OrderedHash, obj_from_bson
|
assert_kind_of OrderedHash, obj_from_bson
|
||||||
|
|
Loading…
Reference in New Issue