diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2014-04-27 21:24:19 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2014-04-27 21:24:30 -0400 |
commit | 36825f38dd44d8630b07be843dfc1619fe9f8d5c (patch) | |
tree | 6e4f6a0bd0babe95cfc3980ff5b97b9ad1f266db /src | |
parent | e4c1a496f2320f65c27c7a08288c434d8b12876a (diff) | |
download | postgresql-36825f38dd44d8630b07be843dfc1619fe9f8d5c.tar.gz postgresql-36825f38dd44d8630b07be843dfc1619fe9f8d5c.zip |
Can't completely get rid of #ifndef FRONTEND in palloc.h :-(
pg_controldata includes postgres.h not postgres_fe.h, so utils/palloc.h
must be able to compile in a "#define FRONTEND" context. It appears that
Solaris Studio is smart enough to persuade us to define PG_USE_INLINE,
but not smart enough to not make a copy of unreferenced static functions;
which leads to an unsatisfied reference to CurrentMemoryContext. So we
need an #ifndef FRONTEND around that declaration. Per buildfarm.
Diffstat (limited to 'src')
-rw-r--r-- | src/include/utils/palloc.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/include/utils/palloc.h b/src/include/utils/palloc.h index f865069d19d..5bb217d1d2d 100644 --- a/src/include/utils/palloc.h +++ b/src/include/utils/palloc.h @@ -71,8 +71,14 @@ extern void pfree(void *pointer); * MemoryContextSwitchTo can't be a macro in standard C compilers. * But we can make it an inline function if the compiler supports it. * See STATIC_IF_INLINE in c.h. + * + * Although this header file is nominally backend-only, certain frontend + * programs like pg_controldata include it via postgres.h. For some compilers + * it's necessary to hide the inline definition of MemoryContextSwitchTo in + * this scenario; hence the #ifndef FRONTEND. */ +#ifndef FRONTEND #ifndef PG_USE_INLINE extern MemoryContext MemoryContextSwitchTo(MemoryContext context); #endif /* !PG_USE_INLINE */ @@ -86,6 +92,7 @@ MemoryContextSwitchTo(MemoryContext context) return old; } #endif /* PG_USE_INLINE || MCXT_INCLUDE_DEFINITIONS */ +#endif /* FRONTEND */ /* * These are like standard strdup() except the copied string is |