diff --git a/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C b/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C
index 8736987ca9c34ec53811ace7b89a01823fb75543..3791ad53de95d39598e85810f674f489fcde4327 100644
--- a/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C
+++ b/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -532,12 +532,23 @@ Foam::label Foam::ptscotchDecomp::decompose
 
     if (maxWeights > minWeights)
     {
-        // Convert to integers.
-        velotab.setSize(cWeights.size());
+        if (cWeights.size())
+        {
+            // Convert to integers.
+            velotab.setSize(cWeights.size());
 
-        forAll(velotab, i)
+            forAll(velotab, i)
+            {
+                velotab[i] = int((cWeights[i]/minWeights - 1)*rangeScale) + 1;
+            }
+        }
+        else
         {
-            velotab[i] = int((cWeights[i]/minWeights - 1)*rangeScale) + 1;
+            // Locally zero cells but not globally. Make sure we have
+            // some size so .begin() does not return null pointer. Data
+            // itself is never used.
+            velotab.setSize(1);
+            velotab[0] = 1;
         }
     }