Skip to content

Commit afa6b3c

Browse files
Merge pull request #1219 from microsoft/mk/bug-fix-cloning-stackoverflow-exception
Revert dictionary clone helper logic
2 parents ad2b066 + 6724593 commit afa6b3c

21 files changed

+50
-125
lines changed

src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<Company>Microsoft</Company>
1111
<Title>Microsoft.OpenApi.Readers</Title>
1212
<PackageId>Microsoft.OpenApi.Readers</PackageId>
13-
<Version>1.6.4-preview3</Version>
13+
<Version>1.6.4-preview4</Version>
1414
<Description>OpenAPI.NET Readers for JSON and YAML documents</Description>
1515
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
1616
<PackageTags>OpenAPI .NET</PackageTags>

src/Microsoft.OpenApi/Any/OpenApiAnyCloneHelper.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ public static IOpenApiAny CloneFromCopyConstructor(IOpenApiAny obj)
2727
{
2828
return (IOpenApiAny)ci.Invoke(new object[] { obj });
2929
}
30-
}
30+
}
3131
}
32-
32+
3333
return obj;
3434
}
3535
}

src/Microsoft.OpenApi/Helpers/DictionaryCloneHelper.cs

Lines changed: 0 additions & 48 deletions
This file was deleted.

src/Microsoft.OpenApi/Microsoft.OpenApi.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<Company>Microsoft</Company>
1212
<Title>Microsoft.OpenApi</Title>
1313
<PackageId>Microsoft.OpenApi</PackageId>
14-
<Version>1.6.4-preview3</Version>
14+
<Version>1.6.4-preview4</Version>
1515
<Description>.NET models with JSON and YAML writers for OpenAPI specification</Description>
1616
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
1717
<PackageTags>OpenAPI .NET</PackageTags>

src/Microsoft.OpenApi/Models/OpenApiCallback.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
// Licensed under the MIT license.
33

44
using System.Collections.Generic;
5-
using Microsoft.OpenApi.Any;
65
using Microsoft.OpenApi.Expressions;
7-
using Microsoft.OpenApi.Helpers;
86
using Microsoft.OpenApi.Interfaces;
97
using Microsoft.OpenApi.Writers;
108

src/Microsoft.OpenApi/Models/OpenApiComponents.cs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
using System.Collections.Generic;
55
using System.Linq;
6-
using Microsoft.OpenApi.Helpers;
76
using Microsoft.OpenApi.Interfaces;
87
using Microsoft.OpenApi.Writers;
98

@@ -77,15 +76,15 @@ public OpenApiComponents() { }
7776
/// </summary>
7877
public OpenApiComponents(OpenApiComponents components)
7978
{
80-
Schemas = DictionaryCloneHelper.Clone(components?.Schemas);
81-
Responses = DictionaryCloneHelper.Clone(components?.Responses);
82-
Parameters = DictionaryCloneHelper.Clone(components?.Parameters);
83-
Examples = DictionaryCloneHelper.Clone(components?.Examples);
84-
RequestBodies = DictionaryCloneHelper.Clone(components?.RequestBodies);
85-
Headers = DictionaryCloneHelper.Clone(components?.Headers);
86-
SecuritySchemes = DictionaryCloneHelper.Clone(components?.SecuritySchemes);
87-
Links = DictionaryCloneHelper.Clone(components?.Links);
88-
Callbacks = DictionaryCloneHelper.Clone(components?.Callbacks);
79+
Schemas = components?.Schemas != null ? new Dictionary<string, OpenApiSchema>(components.Schemas) : null;
80+
Responses = components?.Responses != null ? new Dictionary<string, OpenApiResponse>(components.Responses) : null;
81+
Parameters = components?.Parameters != null ? new Dictionary<string, OpenApiParameter>(components.Parameters) : null;
82+
Examples = components?.Examples != null ? new Dictionary<string, OpenApiExample>(components.Examples) : null;
83+
RequestBodies = components?.RequestBodies != null ? new Dictionary<string, OpenApiRequestBody>(components.RequestBodies) : null;
84+
Headers = components?.Headers != null ? new Dictionary<string, OpenApiHeader>(components.Headers) : null;
85+
SecuritySchemes = components?.SecuritySchemes != null ? new Dictionary<string, OpenApiSecurityScheme>(components.SecuritySchemes) : null;
86+
Links = components?.Links != null ? new Dictionary<string, OpenApiLink>(components.Links) : null;
87+
Callbacks = components?.Callbacks != null ? new Dictionary<string, OpenApiCallback>(components.Callbacks) : null;
8988
Extensions = components?.Extensions != null ? new Dictionary<string, IOpenApiExtension>(components.Extensions) : null;
9089
}
9190

src/Microsoft.OpenApi/Models/OpenApiDocument.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
using System.Security.Cryptography;
99
using System.Text;
1010
using Microsoft.OpenApi.Exceptions;
11-
using Microsoft.OpenApi.Helpers;
1211
using Microsoft.OpenApi.Interfaces;
1312
using Microsoft.OpenApi.Services;
1413
using Microsoft.OpenApi.Writers;

src/Microsoft.OpenApi/Models/OpenApiEncoding.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
// Licensed under the MIT license.
33

44
using System.Collections.Generic;
5-
using Microsoft.OpenApi.Any;
65
using Microsoft.OpenApi.Extensions;
7-
using Microsoft.OpenApi.Helpers;
86
using Microsoft.OpenApi.Interfaces;
97
using Microsoft.OpenApi.Writers;
108

@@ -65,7 +63,7 @@ public OpenApiEncoding() {}
6563
public OpenApiEncoding(OpenApiEncoding encoding)
6664
{
6765
ContentType = encoding?.ContentType ?? ContentType;
68-
Headers = DictionaryCloneHelper.Clone(encoding?.Headers);
66+
Headers = encoding?.Headers != null ? new Dictionary<string, OpenApiHeader>(encoding.Headers) : null;
6967
Style = encoding?.Style ?? Style;
7068
Explode = encoding?.Explode ?? Explode;
7169
AllowReserved = encoding?.AllowReserved ?? AllowReserved;

src/Microsoft.OpenApi/Models/OpenApiExample.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
using System.Collections.Generic;
55
using Microsoft.OpenApi.Any;
6-
using Microsoft.OpenApi.Helpers;
76
using Microsoft.OpenApi.Interfaces;
87
using Microsoft.OpenApi.Writers;
98

src/Microsoft.OpenApi/Models/OpenApiHeader.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using System.Collections.Generic;
55
using Microsoft.OpenApi.Any;
66
using Microsoft.OpenApi.Extensions;
7-
using Microsoft.OpenApi.Helpers;
87
using Microsoft.OpenApi.Interfaces;
98
using Microsoft.OpenApi.Writers;
109

@@ -108,8 +107,8 @@ public OpenApiHeader(OpenApiHeader header)
108107
AllowReserved = header?.AllowReserved ?? AllowReserved;
109108
Schema = header?.Schema != null ? new(header?.Schema) : null;
110109
Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(header?.Example);
111-
Examples = DictionaryCloneHelper.Clone(header?.Examples);
112-
Content = DictionaryCloneHelper.Clone(header?.Content);
110+
Examples = header?.Examples != null ? new Dictionary<string, OpenApiExample>(header.Examples) : null;
111+
Content = header?.Content != null ? new Dictionary<string, OpenApiMediaType>(header.Content) : null;
113112
Extensions = header?.Extensions != null ? new Dictionary<string, IOpenApiExtension>(header.Extensions) : null;
114113
}
115114

0 commit comments

Comments
 (0)