]> git.mxchange.org Git - simgear.git/commitdiff
CSSBorder: Do not return unitialized data.
authorThomas Geymayer <tomgey@gmail.com>
Fri, 7 Jun 2013 16:54:41 +0000 (18:54 +0200)
committerThomas Geymayer <tomgey@gmail.com>
Fri, 7 Jun 2013 16:54:41 +0000 (18:54 +0200)
simgear/misc/CSSBorder.cxx
simgear/misc/CSSBorder_test.cxx

index cf4dd9e77dc7b22c275c2165847b3fc1636da921..cc3ffc9aa520c68f261b3e389457449db4479150 100644 (file)
@@ -50,26 +50,34 @@ namespace simgear
   //----------------------------------------------------------------------------
   CSSBorder::Offsets CSSBorder::getRelOffsets(const SGRect<int>& dim) const
   {
-    Offsets ret;
+    Offsets ret = {{0}};
+    if( !valid )
+      return ret;
+
     for(int i = 0; i < 4; ++i)
     {
       ret.val[i] = offsets.val[i];
       if( !types.rel[i] )
         ret.val[i] /= (i & 1) ? dim.height() : dim.width();
     }
+
     return ret;
   }
 
   //----------------------------------------------------------------------------
   CSSBorder::Offsets CSSBorder::getAbsOffsets(const SGRect<int>& dim) const
   {
-    Offsets ret;
+    Offsets ret = {{0}};
+    if( !valid )
+      return ret;
+
     for(int i = 0; i < 4; ++i)
     {
       ret.val[i] = offsets.val[i];
       if( types.rel[i] )
         ret.val[i] *= (i & 1) ? dim.height() : dim.width();
     }
+
     return ret;
   }
 
index 29d43366b2ef9d1283a408d088f329135f943f34..5f7545045b5aa3105c8a367d599d77dbe003bae8 100644 (file)
@@ -86,6 +86,19 @@ int main (int ac, char ** av)
   VERIFY(b.getKeyword().empty());
   VERIFY(b.isNone());
 
+  CSSBorder b2;
+  VERIFY(!b2.isValid());
+  o = b.getAbsOffsets(SGRect<int>(0,0,200,200));
+  COMPARE(o.t, 0);
+  COMPARE(o.r, 0);
+  COMPARE(o.b, 0);
+  COMPARE(o.l, 0);
+  o = b.getRelOffsets(SGRect<int>(0,0,200,200));
+  COMPARE(o.t, 0);
+  COMPARE(o.r, 0);
+  COMPARE(o.b, 0);
+  COMPARE(o.l, 0);
+
   std::cout << "all tests passed successfully!" << std::endl;
   return 0;
 }