aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2014-04-27 21:24:19 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2014-04-27 21:24:30 -0400
commit36825f38dd44d8630b07be843dfc1619fe9f8d5c (patch)
tree6e4f6a0bd0babe95cfc3980ff5b97b9ad1f266db /src
parente4c1a496f2320f65c27c7a08288c434d8b12876a (diff)
downloadpostgresql-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.h7
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