aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Frost <sfrost@snowman.net>2016-12-06 23:02:38 -0500
committerStephen Frost <sfrost@snowman.net>2016-12-06 23:02:38 -0500
commitd97b14ddab2059e1d73c0cd17f26bac4ef13e682 (patch)
treec7ac9b0c1a5e6e0183668f18d2718a2cc2ce66a4
parent0645dacc371da6169b06934e3bd238c5f770fe25 (diff)
downloadpostgresql-d97b14ddab2059e1d73c0cd17f26bac4ef13e682.tar.gz
postgresql-d97b14ddab2059e1d73c0cd17f26bac4ef13e682.zip
Silence compiler warnings
Rearrange a bit of code to ensure that 'mode' in LWLockRelease is obviously always set, which seems a bit cleaner and avoids a compiler warning (thanks to Robert for the suggestion!). In GetCachedPlan(), initialize 'plan' to silence a compiler warning, but also add an Assert() to make sure we don't ever actually fall through with 'plan' still being set to NULL, since we are about to dereference it. Neither of these appear to be live bugs but at least gcc 5.4.0-6ubuntu1~16.04.4 doesn't quite have the smarts to realize that. Discussion: https://www.postgresql.org/message-id/20161129152102.GR13284%40tamriel.snowman.net
-rw-r--r--src/backend/storage/lmgr/lwlock.c9
-rw-r--r--src/backend/utils/cache/plancache.c4
2 files changed, 7 insertions, 6 deletions
diff --git a/src/backend/storage/lmgr/lwlock.c b/src/backend/storage/lmgr/lwlock.c
index 9c6862f41e0..ffb2f72953c 100644
--- a/src/backend/storage/lmgr/lwlock.c
+++ b/src/backend/storage/lmgr/lwlock.c
@@ -1780,15 +1780,14 @@ LWLockRelease(LWLock *lock)
* be the latest-acquired lock; so search array backwards.
*/
for (i = num_held_lwlocks; --i >= 0;)
- {
if (lock == held_lwlocks[i].lock)
- {
- mode = held_lwlocks[i].mode;
break;
- }
- }
+
if (i < 0)
elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock));
+
+ mode = held_lwlocks[i].mode;
+
num_held_lwlocks--;
for (; i < num_held_lwlocks; i++)
held_lwlocks[i] = held_lwlocks[i + 1];
diff --git a/src/backend/utils/cache/plancache.c b/src/backend/utils/cache/plancache.c
index 884cdab7024..aa146d69437 100644
--- a/src/backend/utils/cache/plancache.c
+++ b/src/backend/utils/cache/plancache.c
@@ -1128,7 +1128,7 @@ CachedPlan *
GetCachedPlan(CachedPlanSource *plansource, ParamListInfo boundParams,
bool useResOwner)
{
- CachedPlan *plan;
+ CachedPlan *plan = NULL;
List *qlist;
bool customplan;
@@ -1210,6 +1210,8 @@ GetCachedPlan(CachedPlanSource *plansource, ParamListInfo boundParams,
}
}
+ Assert(plan != NULL);
+
/* Flag the plan as in use by caller */
if (useResOwner)
ResourceOwnerEnlargePlanCacheRefs(CurrentResourceOwner);