Skip to content

Commit 563b046

Browse files
Merge pull request #1099 from microsoft/mk/fix-schema-copy-constructor-stackoverflow
StackOverflow when using OpenApiSchema Copy Constructor
2 parents 5e3d9d3 + 1dae8dc commit 563b046

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/Microsoft.OpenApi/Models/OpenApiSchema.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ public OpenApiSchema(OpenApiSchema schema)
280280
MaxProperties = schema?.MaxProperties ?? MaxProperties;
281281
MinProperties = schema?.MinProperties ?? MinProperties;
282282
AdditionalPropertiesAllowed = schema?.AdditionalPropertiesAllowed ?? AdditionalPropertiesAllowed;
283-
AdditionalProperties = new(schema?.AdditionalProperties);
283+
AdditionalProperties = schema?.AdditionalProperties != null ? new(schema?.AdditionalProperties) : null;
284284
Discriminator = schema?.Discriminator != null ? new(schema?.Discriminator) : null;
285285
Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(schema?.Example);
286286
Enum = schema?.Enum != null ? new List<IOpenApiAny>(schema.Enum) : null;

test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,5 +463,24 @@ public void SerializeAsV2ShouldSetFormatPropertyInParentSchemaIfPresentInChildre
463463
// Assert
464464
Assert.Equal(expectedV2Schema, v2Schema);
465465
}
466+
467+
[Fact]
468+
public void OpenApiSchemaCopyConstructorSucceeds()
469+
{
470+
var baseSchema = new OpenApiSchema()
471+
{
472+
Type = "string",
473+
Format = "date"
474+
};
475+
476+
var actualSchema = new OpenApiSchema(baseSchema)
477+
{
478+
Nullable = true
479+
};
480+
481+
Assert.Equal("string", actualSchema.Type);
482+
Assert.Equal("date", actualSchema.Format);
483+
Assert.True(actualSchema.Nullable);
484+
}
466485
}
467486
}

0 commit comments

Comments
 (0)