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 @@
- dfm
- dfm
TWebModule