try/catch for bug 40037 weird timestamps in exif
authorBrion Vibber <brion@pobox.com>
Thu, 6 Sep 2012 19:10:57 +0000 (12:10 -0700)
committerBrion Vibber <brion@pobox.com>
Thu, 6 Sep 2012 19:10:57 +0000 (12:10 -0700)
Change-Id: I474bb796328baab6ca123d68c3ce7cf78fccfd3a

includes/media/FormatMetadata.php

index 6914402..843c1fa 100644 (file)
@@ -104,10 +104,16 @@ class FormatMetadata {
                                        . ':' . str_pad( intval( $m[0] / $m[1] ), 2, '0', STR_PAD_LEFT )
                                        . ':' . str_pad( intval( $s[0] / $s[1] ), 2, '0', STR_PAD_LEFT );
 
-                               $time = wfTimestamp( TS_MW, '1971:01:01 ' . $tags[$tag] );
-                               // the 1971:01:01 is just a placeholder, and not shown to user.
-                               if ( $time && intval( $time ) > 0 ) {
-                                       $tags[$tag] = $wgLang->time( $time );
+                               try {
+                                       $time = wfTimestamp( TS_MW, '1971:01:01 ' . $tags[$tag] );
+                                       // the 1971:01:01 is just a placeholder, and not shown to user.
+                                       if ( $time && intval( $time ) > 0 ) {
+                                               $tags[$tag] = $wgLang->time( $time );
+                                       }
+                               } catch ( TimestampException $e ) {
+                                       // This shouldn't happen, but we've seen bad formats
+                                       // such as 4-digit seconds in the wild.
+                                       // leave $tags[$tag] as-is
                                }
                                continue;
                        }