diff --git a/lib/json-schema/validator.rb b/lib/json-schema/validator.rb index 50b5b07f..5d103d93 100644 --- a/lib/json-schema/validator.rb +++ b/lib/json-schema/validator.rb @@ -91,15 +91,16 @@ def schema_from_fragment(base_schema, fragment) if !base_schema.has_key?(f) raise JSON::Schema::SchemaError.new("Invalid fragment resolution for :fragment option") end - base_schema = JSON::Schema.new(base_schema[f],schema_uri,@options[:version]) + base_schema = base_schema[f] elsif base_schema.is_a?(Array) if base_schema[f.to_i].nil? raise JSON::Schema::SchemaError.new("Invalid fragment resolution for :fragment option") end - base_schema = JSON::Schema.new(base_schema[f.to_i],schema_uri,@options[:version]) + base_schema = base_schema[f.to_i] else raise JSON::Schema::SchemaError.new("Invalid schema encountered when resolving :fragment option") end + base_schema = JSON::Schema.new(base_schema,schema_uri,@options[:version]) unless base_schema.is_a?(JSON::Schema) end if @options[:list]