--- opencv-1.0.0.orig/otherlibs/highgui/cvcap_v4l.cpp	2006-09-27 03:40:03.000000000 +0200
+++ opencv-1.0.0/otherlibs/highgui/cvcap_v4l.cpp	2007-08-11 08:56:36.000000000 +0200
@@ -1674,7 +1674,7 @@
             m_height = cinfo->image_height;
             m_iscolor = cinfo->num_components > 1;
 
-            result = true;
+            result = (cinfo->err->num_warnings == 0);
         }
     }
 
@@ -1685,7 +1685,7 @@
 }
 
 /* convert from mjpeg to rgb24 */
-static void 
+static bool 
 mjpeg_to_rgb24 (int width, int height,
 		unsigned char *src, int length,
 		unsigned char *dst)
@@ -1693,10 +1693,22 @@
     /* use a MyMJpegReader reader for doing the conversion */
     MyMJpegReader* reader = 0;
     reader = new MyMJpegReader (src, length);
-    reader->ReadHeader ();
-    reader->ReadData (dst, width * 3, 1 );
+    
+    if(!reader->ReadHeader ())
+    {
+        delete reader;
+        return false;
+    }
+
+    if(!reader->ReadData (dst, width * 3, 1 ))
+    {
+        delete reader;
+        return false;
+    }
+
     delete reader;
 
+    return true;
 }
 
 #endif
@@ -2033,12 +2045,15 @@
        because it's use libjepg and fmemopen()
     */
     if (PALETTE_MJPEG == 1)
-      mjpeg_to_rgb24(capture->form.fmt.pix.width,
+      if(!mjpeg_to_rgb24(capture->form.fmt.pix.width,
 		     capture->form.fmt.pix.height,
 		     (unsigned char*)(capture->buffers[capture->bufferIndex]
 				      .start),
 		     capture->buffers[capture->bufferIndex].length,
-		     (unsigned char*)capture->frame.imageData);
+		     (unsigned char*)capture->frame.imageData))
+      {
+	      return 0;
+      }
 #endif
 #endif
 

