pageinspect: Fix use of wrong memory context by hash_page_items.
authorRobert Haas <rhaas@postgresql.org>
Fri, 26 Jan 2018 14:51:15 +0000 (09:51 -0500)
committerRobert Haas <rhaas@postgresql.org>
Fri, 26 Jan 2018 14:56:33 +0000 (09:56 -0500)
This can cause it to produce incorrect output.

Report and patch by Masahiko Sawada.

Discussion: http://postgr.es/m/CAD21AoBc5Asx7pXdUWu6NqU_g=Ysn95EGL9SMeYhLLduYoO_OA@mail.gmail.com

contrib/pageinspect/hashfuncs.c

index 3d0e3f9757e758e37671531b85df6a403e6c43ac..99b61b8669fe0400694ee73cc927289be87e35b4 100644 (file)
@@ -313,10 +313,10 @@ hash_page_items(PG_FUNCTION_ARGS)
 
        fctx = SRF_FIRSTCALL_INIT();
 
-       page = verify_hash_page(raw_page, LH_BUCKET_PAGE | LH_OVERFLOW_PAGE);
-
        mctx = MemoryContextSwitchTo(fctx->multi_call_memory_ctx);
 
+       page = verify_hash_page(raw_page, LH_BUCKET_PAGE | LH_OVERFLOW_PAGE);
+
        uargs = palloc(sizeof(struct user_args));
 
        uargs->page = page;