]> granicus.if.org Git - postgresql/commitdiff
Silence compiler warnings
authorStephen Frost <sfrost@snowman.net>
Wed, 7 Dec 2016 04:02:38 +0000 (23:02 -0500)
committerStephen Frost <sfrost@snowman.net>
Wed, 7 Dec 2016 04:02:38 +0000 (23:02 -0500)
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

src/backend/storage/lmgr/lwlock.c
src/backend/utils/cache/plancache.c

index 9c6862f41e01926e7db211073f78703a6bf70ed6..ffb2f72953c5d915c2ed20c5992a7c2d80539ea8 100644 (file)
@@ -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];
index 884cdab7024eadf5d5bf16ec95819af00c91e835..aa146d69437787f33ab02b6e3a1326002f6a8e7c 100644 (file)
@@ -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);