diff --git a/lib/swagdoc/Source/Swag.Doc.Definition.pas b/lib/swagdoc/Source/Swag.Doc.Definition.pas index 3e56da9ed..11fff0254 100644 --- a/lib/swagdoc/Source/Swag.Doc.Definition.pas +++ b/lib/swagdoc/Source/Swag.Doc.Definition.pas @@ -70,7 +70,8 @@ implementation destructor TSwagDefinition.Destroy; begin - FreeAndNil(fJsonSchema); + if Assigned(fJsonSchema) then + FreeAndNil(fJsonSchema); inherited Destroy; end; diff --git a/lib/swagdoc/Source/Swag.Doc.Path.Operation.RequestParameter.pas b/lib/swagdoc/Source/Swag.Doc.Path.Operation.RequestParameter.pas index 22f321138..318b9ecf2 100644 --- a/lib/swagdoc/Source/Swag.Doc.Path.Operation.RequestParameter.pas +++ b/lib/swagdoc/Source/Swag.Doc.Path.Operation.RequestParameter.pas @@ -205,7 +205,7 @@ function TSwagRequestParameter.GenerateJsonObject: TJSONObject; if (not fSchema.Name.IsEmpty) then vJsonObject.AddPair(c_SwagRequestParameterSchema, fSchema.GenerateJsonRefDefinition) else if Assigned(fSchema.JsonSchema) then - vJsonObject.AddPair(c_SwagRequestParameterSchema, fSchema.JsonSchema as TJSONObject); + vJsonObject.AddPair(c_SwagRequestParameterSchema, fSchema.JsonSchema.Clone as TJSONObject); end; if (fTypeParameter <> stpNotDefined) then vJsonObject.AddPair(c_SwagRequestParameterType, c_SwagTypeParameter[fTypeParameter]); diff --git a/lib/swagdoc/Source/Swag.Doc.Path.Operation.Response.pas b/lib/swagdoc/Source/Swag.Doc.Path.Operation.Response.pas index 3c4b2523c..7be795916 100644 --- a/lib/swagdoc/Source/Swag.Doc.Path.Operation.Response.pas +++ b/lib/swagdoc/Source/Swag.Doc.Path.Operation.Response.pas @@ -144,7 +144,7 @@ function TSwagResponse.GenerateJsonObject: TJSONObject; if (not fSchema.Name.IsEmpty) then vJsonObject.AddPair(c_SwagResponseSchema, fSchema.GenerateJsonRefDefinition) else if Assigned(fSchema.JsonSchema) then - vJsonObject.AddPair(c_SwagResponseSchema, fSchema.JsonSchema as TJSONObject); + vJsonObject.AddPair(c_SwagResponseSchema, fSchema.JsonSchema.Clone as TJSONObject); if (fExamples.Count > 0) then vJsonObject.AddPair(c_SwagResponseExamples, GenerateExamplesJsonObject); @@ -186,7 +186,7 @@ procedure TSwagResponse.Load(pJson: TJSONObject); end; if Assigned(pJson.Values[c_SwagResponseSchema]) then - fSchema.JsonSchema := pJson.Values[c_SwagResponseSchema].Clone as TJSONObject + fSchema.JsonSchema := pJson.Values[c_SwagResponseSchema].Clone as TJSONObject; end; end. diff --git a/lib/swagdoc/Source/Swag.Doc.pas b/lib/swagdoc/Source/Swag.Doc.pas index 09fb38903..259f5fed9 100644 --- a/lib/swagdoc/Source/Swag.Doc.pas +++ b/lib/swagdoc/Source/Swag.Doc.pas @@ -258,7 +258,7 @@ function TSwagDoc.GenerateDefinitionsJsonObject: TJSONObject; begin Result := TJsonObject.Create; for vIndex := 0 to fDefinitions.Count -1 do - Result.AddPair(fDefinitions.Items[vIndex].Name, fDefinitions.Items[vIndex].JsonSchema); + Result.AddPair(fDefinitions.Items[vIndex].Name, fDefinitions.Items[vIndex].JsonSchema.Clone as TJSONObject); end; function TSwagDoc.GenerateParametersJsonObject: TJSONObject; diff --git a/samples/swaggerdoc/SwaggerDocApi.dpr b/samples/swaggerdoc/SwaggerDocApi.dpr index 5a37b69da..c4e64098e 100644 --- a/samples/swaggerdoc/SwaggerDocApi.dpr +++ b/samples/swaggerdoc/SwaggerDocApi.dpr @@ -2,6 +2,7 @@ program SwaggerDocApi; {$APPTYPE GUI} uses +// FastMM4, Vcl.Forms, Web.WebReq, IdHTTPWebBrokerBridge, diff --git a/samples/swaggerdoc/SwaggerDocApi.dproj b/samples/swaggerdoc/SwaggerDocApi.dproj index e6f712b00..76199ef0b 100644 --- a/samples/swaggerdoc/SwaggerDocApi.dproj +++ b/samples/swaggerdoc/SwaggerDocApi.dproj @@ -103,11 +103,9 @@
MainForm
- dfm
WebModule1
- dfm TWebModule