videoio(dc1394_v2): ensure variable initialization
authorAlexander Alekhin <alexander.a.alekhin@gmail.com>
Tue, 6 Oct 2020 20:57:40 +0000 (20:57 +0000)
committerAlexander Alekhin <alexander.a.alekhin@gmail.com>
Tue, 6 Oct 2020 21:00:36 +0000 (21:00 +0000)
modules/videoio/src/cap_dc1394_v2.cpp

index ba309fbf54f42ecf324f25152ace17008bfafafb..938b31f4a995872d2e4500866b3aae7a5921d869 100644 (file)
@@ -221,60 +221,57 @@ bool CvCaptureCAM_DC1394_v2_CPP::startCapture()
                                           DC1394_ISO_SPEED_3200);
     }
 
-    // should a specific mode be used
-    if (userMode >= 0)
+    dc1394video_modes_t videoModes;
+    dc1394_video_get_supported_modes(dcCam, &videoModes);
 
+    // should a specific mode be used
+    while (userMode >= 0)  // 'if' semantic, no real loop here
     {
         dc1394video_mode_t wantedMode;
-        dc1394video_modes_t videoModes;
-        dc1394_video_get_supported_modes(dcCam, &videoModes);
-
-        //set mode from number, for example the second supported mode, i.e userMode = 1
 
         if (userMode < (int)videoModes.num)
         {
+            // set mode from number, for example the second supported mode, i.e userMode = 1
             wantedMode = videoModes.modes[userMode];
         }
-
-        //set modes directly from DC134 constants (from dc1394video_mode_t)
-        else if ((userMode >= DC1394_VIDEO_MODE_MIN) && (userMode <= DC1394_VIDEO_MODE_MAX ))
+        else if ((userMode >= DC1394_VIDEO_MODE_MIN) && (userMode <= DC1394_VIDEO_MODE_MAX))
         {
+            // set modes directly from DC134 constants (from dc1394video_mode_t)
+
             //search for wanted mode, to check if camera supports it
             int j = 0;
-            while ((j< (int)videoModes.num) && videoModes.modes[j]!=userMode)
+            while ((j < (int)videoModes.num) && videoModes.modes[j] != userMode)
             {
                 j++;
             }
-
-            if ((int)videoModes.modes[j]==userMode)
-            {
-                wantedMode = videoModes.modes[j];
-            }
-            else
+            if (!(j < (int)videoModes.num))
             {
                 userMode = -1;  // wanted mode not supported, search for best mode
+                break;
             }
+
+            wantedMode = videoModes.modes[j];
         }
         else
         {
-            userMode = -1;      // wanted mode not supported, search for best mode
+            userMode = -1;  // wanted mode not supported, search for best mode
+            break;
         }
+
         //if userMode is available: set it and update size
-        if (userMode != -1)
         {
             code = dc1394_video_set_mode(dcCam, wantedMode);
-            uint32_t width, height;
+            uint32_t width = 0, height = 0;
             dc1394_get_image_size_from_video_mode(dcCam, wantedMode, &width, &height);
             frameWidth  = (int)width;
             frameHeight = (int)height;
         }
+        break;
     }
 
     if (userMode == -1 && (frameWidth > 0 || frameHeight > 0))
     {
-        dc1394video_mode_t bestMode = (dc1394video_mode_t) - 1;
-        dc1394video_modes_t videoModes;
-        dc1394_video_get_supported_modes(dcCam, &videoModes);
+        dc1394video_mode_t bestMode = (dc1394video_mode_t)(-1);
         for (i = 0; i < (int)videoModes.num; i++)
         {
             dc1394video_mode_t mode = videoModes.modes[i];