Coverity #1099226, #1099227, #1099228, #1320990 fixed 79/18479/3
Dhruv Khattar [Wed, 17 Aug 2016 19:09:24 +0000 (00:09 +0530)]
Change-Id: I096658785797c9cf500df6a6b34e70db729ca8a2

scilab/modules/hdf5/src/cpp/H5BitfieldData.hxx

index 9e7155c..89f132b 100644 (file)
@@ -38,10 +38,13 @@ public:
 
     virtual void printData(std::ostream & os, const unsigned int pos, const unsigned int indentLevel) const
     {
+        // Save 'os' format, fill it and restore
+        char oldChar = os.fill();
         std::ios oldState(nullptr);
         oldState.copyfmt(os);
         os << "0x" << std::hex << std::setfill('0') << std::setw(2) << (int)static_cast<unsigned char * >(getData())[pos];
         os.copyfmt(oldState);
+        os.fill(oldChar);
     }
 };
 
@@ -62,11 +65,14 @@ public:
 
     virtual void printData(std::ostream & os, const unsigned int pos, const unsigned int indentLevel) const
     {
+        // Save 'os' format, fill it and restore
         const unsigned short x = static_cast<unsigned short * >(getData())[pos];
+        char oldChar = os.fill();
         std::ios oldState(nullptr);
         oldState.copyfmt(os);
         os << std::hex << std::setfill('0') << std::setw(2) << (x & 0xFF) << ":" << ((x >> 8) & 0xFF);
         os.copyfmt(oldState);
+        os.fill(oldChar);
     }
 };
 
@@ -87,11 +93,14 @@ public:
 
     virtual void printData(std::ostream & os, const unsigned int pos, const unsigned int indentLevel) const
     {
+        // Save 'os' format, fill it and restore
         const unsigned int x = static_cast<unsigned int * >(getData())[pos];
+        char oldChar = os.fill();
         std::ios oldState(nullptr);
         oldState.copyfmt(os);
         os << std::hex << std::setfill('0') << std::setw(2) << (x & 0xFF) << ":" << ((x >> 8) & 0xFF) << ":" << ((x >> 16) & 0xFF) << ":" << ((x >> 24) & 0xFF);
         os.copyfmt(oldState);
+        os.fill(oldChar);
     }
 };
 
@@ -114,11 +123,14 @@ public:
 
     virtual void printData(std::ostream & os, const unsigned int pos, const unsigned int indentLevel) const
     {
+        // Save 'os' format, fill it and restore
         const unsigned long long x = static_cast<unsigned long long * >(getData())[pos];
+        char oldChar = os.fill();
         std::ios oldState(nullptr);
         oldState.copyfmt(os);
         os << std::hex << std::setfill('0') << std::setw(2) << (x & 0xFF) << ":" << ((x >> 8) & 0xFF) << ":" << ((x >> 16) & 0xFF) << ":" << ((x >> 24) & 0xFF) << ":" << ((x >> 32) & 0xFF) << ":" << ((x >> 40) & 0xFF) << ":" << ((x >> 48) & 0xFF) << ":" << ((x >> 56) & 0xFF);
         os.copyfmt(oldState);
+        os.fill(oldChar);
     }
 };