RUBY-74 raise InvalidDocument for any unrecognized types

This commit is contained in:
Mike Dirolf 2009-12-29 12:59:30 -05:00
parent 1b189336a6
commit e013618a8f
3 changed files with 16 additions and 2 deletions

View File

@ -369,6 +369,9 @@ static int write_element_allow_id(VALUE key, VALUE value, VALUE extra, int allow
SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&obj_length, 4);
break;
}
buffer_free(buffer);
rb_raise(InvalidDocument, "Unsupported type for BSON (%d)", TYPE(value));
break;
}
case T_DATA:
{
@ -421,7 +424,7 @@ static int write_element_allow_id(VALUE key, VALUE value, VALUE extra, int allow
default:
{
buffer_free(buffer);
rb_raise(rb_eTypeError, "no c encoder for this type yet (%d)", TYPE(value));
rb_raise(InvalidDocument, "Unsupported type for BSON (%d)", TYPE(value));
break;
}
}

View File

@ -554,7 +554,7 @@ class BSON_RUBY
when Symbol
SYMBOL
else
raise "Unknown type of object: #{o.class.name}"
raise InvalidDocument, "Unknown type of object: #{o.class.name}"
end
end

View File

@ -335,4 +335,15 @@ class BSONTest < Test::Unit::TestCase
end
end
def test_invalid_object
o = Object.new
assert_raise InvalidDocument do
BSON.serialize({:foo => o})
end
assert_raise InvalidDocument do
BSON.serialize({:foo => Date.today})
end
end
end