diff --git a/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.C b/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.C
index 2a786c111dd5c5136ceda60e86c914903faa6e2e..aa16d17ad8dffe911b6367ad1ae6488f478eb46f 100644
--- a/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.C
+++ b/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.C
@@ -252,7 +252,7 @@ Foam::Istream& Foam::ISstream::read(token& t)
                 }
                 else
                 {
-                    char *endptr;
+                    char *endptr = NULL;
 
                     if (asLabel)
                     {
@@ -260,7 +260,7 @@ Foam::Istream& Foam::ISstream::read(token& t)
                         t = label(longVal);
 
                         // return as a scalar if doesn't fit in a label
-                        if (t.labelToken() != longVal)
+                        if (*endptr || t.labelToken() != longVal)
                         {
                             t = scalar(strtod(buf, &endptr));
                         }