From 4aac3adb7d2cb3206d5cd09d25e16a542b537c5e Mon Sep 17 00:00:00 2001 From: rweber Date: Thu, 20 Aug 2020 16:06:50 -0600 Subject: [PATCH] Tighter lock on revisting via the unsafe pointers --- openapi3/swagger_loader.go | 3 +++ openapi3/swagger_utils_test.go | 1 + 2 files changed, 4 insertions(+) diff --git a/openapi3/swagger_loader.go b/openapi3/swagger_loader.go index 24b6d0a26..9373e3039 100644 --- a/openapi3/swagger_loader.go +++ b/openapi3/swagger_loader.go @@ -512,6 +512,9 @@ func (swaggerLoader *SwaggerLoader) resolveRefSwagger(swagger *Swagger, ref stri if swg2, err = swaggerLoader.loadSwaggerFromURIInternal(resolvedPath); err != nil { return nil, "", nil, fmt.Errorf("Error while resolving reference '%s': %v", ref, err) } + if swaggerLoader.ClearResolvedRefs { + ClearResolvedExternalRefs(swg2) + } swaggerLoader.loadedRemoteSchemas[*parsedURL] = swg2 } diff --git a/openapi3/swagger_utils_test.go b/openapi3/swagger_utils_test.go index 0a3963a9f..2b2a2547b 100644 --- a/openapi3/swagger_utils_test.go +++ b/openapi3/swagger_utils_test.go @@ -29,5 +29,6 @@ func TestResettingExternalRefs(t *testing.T) { sr := doc.Components.Schemas["AnotherTestSchema"].Value.Properties[s] require.True(t, sr.IsValue()) require.False(t, sr.Resolved()) + require.False(t, sr.IsRef()) } }