From ea925439c460e2bc2e26e5bbb8c75d1c02379754 Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Tue, 29 Apr 2014 18:08:46 +0000 Subject: [PATCH] Avoid referencing memory we've already freed. --- src/backend/utils/mmgr/sb_alloc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/backend/utils/mmgr/sb_alloc.c b/src/backend/utils/mmgr/sb_alloc.c index 7082047d20..1fdcef3575 100644 --- a/src/backend/utils/mmgr/sb_alloc.c +++ b/src/backend/utils/mmgr/sb_alloc.c @@ -340,8 +340,10 @@ sb_free(void *ptr) { sb_heap *heap = relptr_access(base, span->parent); Size first_page; + uint16 size_class; sb_unlink_span(base, heap, span); + size_class = span->size_class; first_page = fpm_pointer_to_page(fpm_base, relptr_access(base, span->start)); FreePageManagerPut(region->fpm, first_page, span->npages); @@ -352,7 +354,7 @@ sb_free(void *ptr) * frees the descriptor also. If this is a superblock of any other * type, we need to separately free the span object also. */ - if (span->size_class != SB_SCLASS_SPAN_OF_SPANS) + if (size_class != SB_SCLASS_SPAN_OF_SPANS) sb_free(span); } -- 2.39.5